【问题标题】:Pyspark and phoenix tablePyspark 和凤凰桌
【发布时间】:2017-01-30 14:49:17
【问题描述】:

我想在 Pyspark 中使用 phoenix 表。我尝试在这里找到的解决方案:https://phoenix.apache.org/phoenix_spark.html

但我有一个错误。你能帮我解决这个错误吗?

df_metadata = sqlCtx.read.format("org.apache.phoenix.spark").option("zkUrl", "xxx").load("lib.name_of_table")
print(df_metadata.collect())

和错误:

py4j.protocol.Py4JJavaError:调用 o103.load 时出错。 :java.lang.ClassNotFoundException:找不到数据源:org.apache.phoenix.spark。请在http://spark-packages.org查找包

如何将 org.apache.phoenix.spark 与 pyspark 一起使用?

【问题讨论】:

  • 步骤 1... 为确保所有必需的 Phoenix / HBase 平台依赖项在 Spark 执行器和驱动程序的类路径上可用,请设置“spark.executor.extraClassPath”和“spark.driver”。 spark-defaults.conf 中的 extraClassPath' 以包含 'phoenix--client-spark.jar'
  • --conf "spark.executor.extraClassPath=/opt/apache-phoenix-X.X.X-HBase-X.X-bin/phoenix-X.X.X-HBase-X.X-client.jar"\ --conf " spark.driver.extraClassPath=/opt/apache-phoenix-X.X.X-HBase-X.X-bin/phoenix-X.X.X-HBase-X.X-client.jar"\ 我在我的 Spark Submit 中添加了这些行。但我不明白第 2 步...
  • 第 2 步是如果你在 Java / Scala 中使用 Maven,我认为
  • 我在 spark submit 中添加了这两行。当我打印我的数据框时,我有一个数据框。但是当我打印 + collect() 我有一个错误:df_metadata = sqlCtx.read.format("org.apache.phoenix.spark").option("table","name").option("zkUrl", "XXX").load() print(df_metadata) print(df_metadata.first()) 现在错误:DataFrame[PRICE: string] 好的这是我的数据框但是当我想打印和收集()时:py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.sql.execution.EvaluatePython.takeAndServe. : org.apache.spark.SparkException: Job aborted due to stage failure:
  • java.lang.IllegalStateException: unread block data

标签: pyspark classnotfoundexception phoenix


【解决方案1】:

好的,我发现这段代码有多正确: 我在我的 spark-submit 中添加了这部分: --jars /opt/phoenix-4.8.1-HBase-1.2/phoenix-spark-4.8.1-HBase-1.2.jar,/opt/phoenix-4.8.1-HBase-1.2/phoenix-4.8.1-HBase -1.2-client.jar \

【讨论】:

    【解决方案2】:

    我知道@Zop 给出的答案是有效的。

    我遇到了这个错误py4j.protocol.Py4JJavaError: An error occurred while calling o53.load. : java.lang.ClassNotFoundException: Failed to find data source: org.apache.phoenix.spark. Please find packages at http://spark.apache.org/third-party-projects.html

    你也可以这样做

    spark-submit --jars /usr/hdp/current/phoenix-client/phoenix-spark2.jar,/usr/hdp/current/phoenix-client/phoenix-4.7.0.2.6.4.0-91-client.jar,/usr/hdp/current/phoenix-client/phoenix-4.7.0.2.6.4.0-91-server.jar  <file here>
    

    【讨论】:

    • 如何在 jupyter notebook 中做
    • 您必须在终端或运行 jupyter notebook 的环境中输入此内容。
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 2016-01-30
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多