2016-10-20 2 views
0

이미 2 일 동안 문제가 발생하여 해결책을 찾을 수 없습니다. 불꽃 DataFrame의 필터 방식 내에서 입력 값을 사용하는 경우ClassNotFoundException : Spark에서 Zeppelin 입력 값을 사용하는 경우 org.apache.zeppelin.spark.ZeppelinContext DataFrame의 필터 메서드

나는

ClassNotFoundException: org.apache.zeppelin.spark.ZeppelinContext 

을 얻고있다.

val city = z.select("City",cities).toString 
oDF.select("city").filter(r => city.equals(r.getAs[String]("city"))).count() 

new String(bytes[]) 

과 다른 발에 입력 값을 복사 시도했지만 여전히 같은 오류가 발생합니다.

내가 리터럴 문자열로 선언 원활 경우 대신 z.select 에서 값을 얻기의 동일한 코드가 작동

city: String = "NY" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 49.0 failed 4 times, most recent failure: Lost task 0.3 in stage 49.0 (TID 277, 10.6.60.217): java.lang.NoClassDefFoundError: Lorg/apache/zeppelin/spark/ZeppelinContext;

+0

도시가 이미 값 "NY"를 할당 했으므로 첫 번째 행이 성공적으로 실행되었습니다. 그리고 클래스'org.apache.zeppelin.spark.ZeppelinContext'는 확실히 Zeppelin에 압축되어 있습니다. 외부 스파크로 달리는 것 같아요. 어떤면에서는 사용자 Z 일 수도 있습니다. 코드를 다른 단락으로 나누고 실행하십시오. –

+0

예 외부 스파크를 사용하고 있습니다. 두 개의 단락으로 나눈 후에도 같은 오류가 발생합니다. –

답변

0

당신은 잘못된 방향으로이 문제를 복용 :

val city="NY" 

은 문자열을 NY로 채운 스칼라 문자열을 제공하지만, 여러분이 말할 때

z.select("City",cities) 

그러면 DataFrame이 반환되고 메서드 toString을 사용하여이 객체를 String으로 변환 한 다음 비교하려고합니다.

실례가 안됩니다!

당신이 할 수있는 일은 하나의 dF를 모은 다음 다른 Df에 따라 scala String을 전달하거나 여러 값에 대해 수행하려는 경우 조인을 수행 할 수 있습니다.

하지만이 방법은 확실하게 작동하지 않습니다!

+0

z 변수는 dataFrame이 아닙니다. Zeppelin Context가 기본 변수인지, 따라서 select 메서드는 Spark의 DataFrame에서 select 메서드가 아닙니다. 이 select 메소드는 toString을 사용하여 String으로 변환 된 Object를 반환합니다. –

+0

toString을 적용한 후에 값을 얻었습니까? 인쇄 할 수 있습니까? –

+0

예, 인쇄 할 수 있습니다. 문제는 변수가 DataFrame의 필터 메서드 내에서 사용될 때입니다. 그것은 최근에 Spark의 드라이버 외부에서, 그리고 org.apache.zeppelin.spark.ZeppelinContext가없는 원격 노드에서 평가되는 것처럼 솔기가 있습니다. Zeppelin은 로컬 드라이버를 사용하여 Spark 클러스터에 제출 및 응용 프로그램을 전송합니다. –