2017-01-05 124 views
0

我想通過Spark/Scala連接到Phoenix來讀寫數據作爲DataFrame。我正在關注GitHub上的示例,但是當我嘗試使用數據源API的第一個示例加載爲DataFrame時,我得到以下例外。火花連接到Phoenix NoSuchMethod異常

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

有兩件事是推動我瘋了,從這些例子:

1)import語句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)我得到不推薦使用的警告mbol負載。 enter image description here

我對該warnign進行了搜索,但沒有得到任何參考,我無法找到任何建議方法的示例。我無法找到任何指導如何連接鳳凰城的好資源。謝謝你的時間。

回答

1

它來不及回答,但這裏是我所做的解決類似的問題(未找到不同的方法和折舊警告):

1)關於的NoSuchMethodError:我把所有的HBase的安裝lib文件夾罐子裏,它添加到您的項目。還添加鳳凰火花罐子。使一定要使用的火花,鳳凰spark.Spark 2.0+與鳳凰火花-4.10 + maven-central-link。這兼容解決的NoSuchMethodError

2)的兼容版本關於加載 - 加載方法早已被棄用。請使用sqlContext.phoenixTableAsDataFrame.For參見此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()