2017-01-05 3 views
0

Я пытаюсь подключиться к Phoenix через Spark/Scala для чтения и записи данных в виде DataFrame. Я следую примеру на GitHub, но когда я пробую самый первый пример Загрузить как DataFrame с использованием API источника данных Я получаю следующее исключение.искровое соединение с Phoenix NoSuchMethod Exception

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Put.setWriteToWAL(Z)Lorg/apache/hadoop/hbase/client/Put;

Есть несколько вещей, которые сводят меня с ума от этих примеров:

1) Оператор импорта import org.apache.phoenix.spark._ дает мне ниже исключения в моем коде:

cannot resolve symbol phoenix

Я включил ниже банки в моем sbt

"org.apache.phoenix" % "phoenix-spark" % "4.4.0.2.4.3.0-227" % Provided, 
"org.apache.phoenix" % "phoenix-core" % "4.4.0.2.4.3.0-227" % Provided, 

2) Я получаю устаревшее предупреждение для sy mbol load. enter image description here

Я разобрался с этим предупреждением, но не получил никаких ссылок, и я не смог найти ни одного примера предлагаемого метода. Я не могу найти какой-либо другой хороший ресурс, который поможет вам подключиться к Phoenix. Спасибо за ваше время.

ответ

1

Его поздно, чтобы ответить, но вот то, что я сделал, чтобы решить подобную проблему (Различный метод не найден и предупреждение устаревания):

1.) Об NoSuchMethodError: Я взял все банки из папки Lib установки HBase и добавить его в проект .Также добавить Феоникс искровых банков Убеждайтесь использовать совместимые версии искры и Феоникс spark.Spark 2.0+ совместим с Феоникс-искровые 4,10 + maven-central-link .Это разрешили NoSuchMethodError

2.) О загрузке - Метод загрузки давно устарел. Используйте sqlContext.phoenixTableAsDataFrame. Для справки см. Это Load as a DataFrame directly using a Configuration object

2

используйте .read вместо нагрузки, как показано ниже

val df = sparkSession.sqlContext.read 
     .format("org.apache.phoenix.spark") 
     .option("zkUrl", "localhost:2181") 
     .option("table", "TABLE1").load() 
Смежные вопросы