2017-12-13 15 views
1

sbt run으로 실행하려고하는 간단한 Spark 프로젝트가 있습니다. 그러나 그것은 CODEGEN 동안 예외가 발생합니다이 spark-submit으로 발생하지 않습니다sbt 1.0.x에서 "sbt run"을 사용하여 Spark 응용 프로그램을 실행하는 데 실패하는 이유는 무엇입니까?

17/12/13 15:19:27 ERROR CodeGenerator: failed to compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 15, Column 34: Cannot determine simple type name "scala" 
/* 001 */ public Object generate(Object[] references) { 
/* 002 */ return new GeneratedIterator(references); 
/* 003 */ } 
/* 004 */ 
/* 005 */ final class GeneratedIterator extends org.apache.spark.sql.execution.BufferedRowIterator { 
/* 006 */ private Object[] references; 
/* 007 */ private scala.collection.Iterator[] inputs; 
/* 008 */ private org.apache.spark.sql.execution.metric.SQLMetric scan_numOutputRows; 
/* 009 */ private scala.collection.Iterator scan_input; 
/* 010 */ 
/* 011 */ public GeneratedIterator(Object[] references) { 
/* 012 */  this.references = references; 
/* 013 */ } 
/* 014 */ 
/* 015 */ public void init(int index, scala.collection.Iterator[] inputs) { 
/* 016 */  partitionIndex = index; 
/* 017 */  this.inputs = inputs; 
/* 018 */  this.scan_numOutputRows = (org.apache.spark.sql.execution.metric.SQLMetric) references[0]; 
/* 019 */  scan_input = inputs[0]; 
/* 020 */ 
/* 021 */ } 
/* 022 */ 
/* 023 */ protected void processNext() throws java.io.IOException { 
/* 024 */  while (scan_input.hasNext()) { 
/* 025 */  InternalRow scan_row = (InternalRow) scan_input.next(); 
/* 026 */  scan_numOutputRows.add(1); 
/* 027 */  append(scan_row); 
/* 028 */  if (shouldStop()) return; 
/* 029 */  } 
/* 030 */ } 
/* 031 */ } 

org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 15, Column 34: Cannot determine simple type name "scala" 

. 정의를 구축하는 것은 최소한의 :

sbt.version = 1.0.4 

로 :

name := "untitled" 

version := "0.1" 

scalaVersion := "2.11.12" 

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-sql" % "2.2.1" 
) 

그래서 (나는 그것이 누군가가 관련이 있다고 생각, 그것을 게시합니다,하지만 난 문제가 일반적이라고 생각)과 build.properties 코드입니다 Spark이 런타임에 스칼라 라이브러리를 찾을 수 없기 때문에 이것이 일어난다는 것을 이해합니다 - 정확합니까?

답변

1

최근에 sbt 1.0.x를 사용하면 sbt run을 통해 번으로 번에 Spark 응용 프로그램이 실행되는 것으로 나타났습니다.

제 생각에 근본적인 원인은 scala 2.12.x 일 수 있습니다. sbt 1.0.x는 어떤 식 으로든이 문제를 일으키는 것을 사용합니다.

문제가 분류 될 때까지 spark-submit을 사용하여 Spark 응용 프로그램을 실행하는 것이 좋습니다.

+1

또한 sbt 1의 bgrun 변경 사항과 관련이있을 수 있습니다. 'sbt 실행'에 대한 근본적인 변경 사항입니다. –