2017-01-05 87 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()