2016-07-11 4 views
2

아파치 피닉스에서 스파크 데이터 프레임으로 데이터를로드하려고합니다.스파크 피닉스 데이터 프레임을 만들 수 없습니다.

내가 성공적으로 다음 코드와 함께 RDD를 만들 수 있었다 : 나는 DataFrame을 만들려고 그렇게 운이 없었다 그러나

val sc = new SparkContext("local", "phoenix-test") 
val sqlContext = new org.apache.spark.sql.SQLContext(sc) 

val foo: RDD[Map[String, AnyRef]] = sc.phoenixTableAsRDD(
    table = "FOO", 
    columns = Seq("ID", "MESSAGE_EPOCH", "MESSAGE_VALUE"), 
    zkUrl = Some("<zk-ip-address>:2181:/hbase-unsecure")) 

foo.collect().foreach(x => println(x)) 

. 나의 현재의 시도는 다음과 같습니다는 ClassCastException에서

val sc = new SparkContext("local", "phoenix-test") 
val sqlContext = new SQLContext(sc) 

val df = sqlContext.phoenixTableAsDataFrame(
    table = "FOO", 
    columns = Seq("ID", "MESSAGE_EPOCH", "MESSAGE_VALUE"), 
    zkUrl = Some("<zk-ip-address>:2181:/hbase-unsecure")) 

df.select(df("ID")).show 

불행하게도 위의 코드 결과 :

java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.GenericMutableRow cannot be cast to org.apache.spark.sql.Row 

난 여전히 불꽃 매우 새로운 오전. 누구든지 도움을받을 수 있다면 대단히 감사하겠습니다! HBase를 1.1.1 독립 모드에서 실행 :

당신이 당신의 스파크 버전과 예외의 세부 사항을 언급하지 않았지만

답변

2

...

환경라고하는 PHOENIX-2287 which is fixed를 참조하십시오 OS X *

스파크 피닉스에 1.5.0 4.5.2

/17시 56분 업데이트 패치 스파크 1.5.0에 대한 지원을 추가하고, 다시 아래 1.3.0에 이전 버전과 호환/15 년 9 월은 (수동 테스트, 스파크 버전 프로파일이 될 수있다 - 691,363,210

조쉬 Mahonin 코멘트를 추가 앞으로 볼 가치가있는) 1.5.0에서, 그들은 갔고 명시 적으로 GenericMutableRow 데이터 구조를 숨 깁니다. 다행히도 우리는 외부 방향 ''데이터 형식을 사용할 수 있습니다.이 형식은 이전 버전과 호환되며 은 향후 릴리스에서도 호환되어야합니다. 업데이트의 일부로 Spark SQL은 'DecimalType'에서 생성자를 사용 중지했습니다. 이 문제를 업데이트하면서 기본 Decimal 유형의 정밀도와 스케일을 Spark로 이월하지 않는다는 새로운 문제점이 발견되었습니다. 지금은 Spark 기본값을 사용하도록 설정했지만 구체적으로 다른 문제를 만듭니다. 이 패치에는 무시 통합 테스트가 포함되었습니다.

+0

내 대답은 괜찮습니다. 투표로 다른 사용자에게 포인터로 도움이되는 "승인 된 소유자" –

관련 문제