我正在尝试通过Spark / Scala连接到Phoenix来读取和写入数据作为DataFrame。我正在关注GitHub上的示例,但是当我尝试第一个示例使用数据源API加载为DataFrame 时,我得到以下异常。
线程中的异常" main" java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.Put.setWriteToWAL(Z)Lorg / apache / hadoop / hbase / client / Put;
有些事情让我对这些例子感到疯狂:
1)导入语句import org.apache.phoenix.spark._
在我的代码中给出了以下异常:
无法解析符号凤凰
我在我的sbt
中包含了以下jars"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,
我用Google搜索了该警告,但没有得到任何参考,我无法找到任何建议方法的示例。我无法找到任何其他有关如何连接凤凰城的指南。谢谢你的时间。
答案 0 :(得分:2)
请使用.read代替加载,如下所示
val df = sparkSession.sqlContext.read
.format("org.apache.phoenix.spark")
.option("zkUrl", "localhost:2181")
.option("table", "TABLE1").load()
答案 1 :(得分:1)
回答很晚但是我在解决类似问题时所采取的措施(找不到不同的方法和弃用警告):
1。)关于NoSuchMethodError:我从hbase安装lib文件夹中取出所有罐子并将其添加到您的项目中。还添加了pheonix spark jar。确保使用兼容版本的spark和pheonix spark.Spark 2.0+兼容用pheonix-spark-4.10 + maven-central-link。这解决了NoSuchMethodError
2.。)关于load - load方法早已被弃用。使用sqlContext.phoenixTableAsDataFrame.For参考这个Load as a DataFrame directly using a Configuration object