2016-07-11 3 views
2

Я пытаюсь загрузить данные из Apache Phoenix в Spark DataFrame.Не удается создать Spark Phoenix DataFrames

я смог успешно создать RDD с помощью следующего кода:

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)) 

Однако я не так повезло, пытаясь создать DataFrame. Моя текущая попытка:

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 

К сожалению, приведенные выше результаты кода в ClassCastException:

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

Я все еще очень новое, чтобы зажечь. Если кто-то может помочь, это будет очень признательно!

ответ

2

Хотя вы не упомянули версию свечи и детали, за исключением ...

Пожалуйста, смотрите PHOENIX-2287 which is fixed, который говорит

Окружающая среда: HBase 1.1.1 работает в автономном режиме на OS X *

Спарк 1.5.0 Phoenix 4.5.2

Джош Махонин добавил комментарий - 23/Сентябрь/15 17:56 Обновленный патч добавляет поддержку для Спарк 1.5.0 и обратно совместим обратно к 1.3.0 (испытаны вручную Спарк версия профили могут быть стоит посмотреть в будущем). В 1.5.0 они ушли и явно скрыли структуру данных GenericMutableRow. К счастью, мы можем использовать внешний тип данных «», который обратно совместим, а должен оставаться совместимым и в будущих выпусках. Как часть обновления , Spark SQL отклонил конструктор на своих «DecimalType». В обновлении этого я раскрыл новую проблему, которая заключается в том, что мы не делаем переносим точность и масштаб базового десятичного типа до Spark. На данный момент я установил его для использования значений Spark по умолчанию, но . Я создам для него еще одну проблему. Я включил проигнорированный интеграционный тест в этом патче.

+0

Вы в порядке с моим ответом, pls. голосование, «принятый владельцем», который помогает другим пользователям в качестве указателя –