【问题标题】:spark connecting to Phoenix NoSuchMethod Exception火花连接到凤凰 NoSuchMethod 异常
【发布时间】:2017-05-20 13:51:00
【问题描述】:

我正在尝试通过 Spark/Scala 连接到 Phoenix,以将数据作为 DataFrame 读写。我正在关注GitHub 上的示例,但是当我尝试第一个示例 Load as a DataFrame using the Data Source API 时,我得到以下异常。

线程“主”java.lang.NoSuchMethodError 中的异常:org.apache.hadoop.hbase.client.Put.setWriteToWAL(Z)Lorg/apache/hadoop/hbase/client/Put;

有几件事让我从这些例子中抓狂:

1) import 语句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,

2) 我收到符号加载的弃用警告。

我用谷歌搜索了那个警告,但没有得到任何参考,也找不到任何建议方法的例子。我找不到任何其他好的资源来指导如何连接到 Phoenix。感谢您的宝贵时间。

【问题讨论】:

    标签: apache-spark phoenix


    【解决方案1】:

    请使用 .read 代替 load,如下所示

    val df = sparkSession.sqlContext.read
            .format("org.apache.phoenix.spark")
            .option("zkUrl", "localhost:2181")
            .option("table", "TABLE1").load()
    

    【讨论】:

      【解决方案2】:

      回答迟了,但这是我为解决类似问题所做的(未找到不同的方法和弃用警告):

      1.) 关于 NoSuchMethodError:我从 hbase 安装 lib 文件夹中取出所有 jars 并将其添加到您的项目中。同时添加 pheonix spark jars。确保使用兼容版本的 spark 和 pheonix spark.Spark 2.0+ 兼容使用 phoonix-spark-4.10+ maven-central-link.This 解决了 NoSuchMethodError

      2.) 关于加载 - 加载方法早就被弃用了。使用 sqlContext.phoenixTableAsDataFrame。参考见Load as a DataFrame directly using a Configuration object

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-07
        • 1970-01-01
        • 2018-02-03
        • 2018-11-02
        • 2017-02-02
        • 2020-03-15
        • 2016-11-03
        相关资源
        最近更新 更多