Pyspark Phoenix 集成在 oozie 工作流程中失败

Posted

技术标签:

【中文标题】Pyspark Phoenix 集成在 oozie 工作流程中失败【英文标题】:Pyspark Phoenix integration failing in oozie workflow 【发布时间】:2019-02-11 06:35:44 【问题描述】:

我正在使用 pyspark 通过以下代码将数据连接并摄取到 phoenix 表中

dataframe.write.format("org.apache.phoenix.spark").mode("overwrite").option("table", "tablename").option("zkUrl", "localhost:2181") .save()

当我在 spark submit 中运行它时,它可以通过以下命令正常工作,

spark-submit --master local --deploy-mode client --files /etc/hbase/conf/hbase-site.xml --conf "spark.executor.extraClassPath=/usr/hdp/current/phoenix-client/lib/phoenix-spark-4.7.0.2.6.3.0-235.jar:/usr/hdp/current/phoenix-client/phoenix-4.7.0.2.6.3.0-235-client.jar" --conf "spark.driver.extraClassPath=/usr/hdp/current/phoenix-client/lib/phoenix-spark-4.7.0.2.6.3.0-235.jar:/usr/hdp/current/phoenix-client/phoenix-4.7.0.2.6.3.0-235-client.jar" sparkPhoenix.py

当我用 oozie 运行它时,我遇到了错误,

.ConnectionClosingException:与 ip-172-31-44-101.us-west-2.compute.internal/172.31.44.101:16020 的连接正在关闭。在 region=hbase:meta,,1.1588230740, hostname=ip-172-31-44-101 的表 'hbase:meta' 上调用 id=9, waitTime=3 行 'SYSTEM:CATALOG,,'

以下是工作流程,

<action name="pysparkAction" retry-max="1" retry-interval="1" cred="hbase">
<spark
xmlns="uri:oozie:spark-action:0.2">
<job-tracker>$jobTracker</job-tracker>
<name-node>$nameNode</name-node>
<master>local</master>
<mode>client</mode>
<name>Spark Example</name>
<jar>sparkPhoenix.py</jar>
<spark-opts>--py-files Leia.zip --files /etc/hbase/conf/hbase-site.xml --conf spark.executor.extraClassPath=/usr/hdp/current/phoenix-client/lib/phoenix-spark-4.7.0.2.6.3.0-235.jar:/usr/hdp/current/phoenix-client/phoenix-4.7.0.2.6.3.0-235-client.jar --conf spark.driver.extraClassPath=/usr/hdp/current/phoenix-client/lib/phoenix-spark-4.7.0.2.6.3.0-235.jar:/usr/hdp/current/phoenix-client/phoenix-4.7.0.2.6.3.0-235-client.jar</spark-opts>
</spark>
<ok to="successEmailaction"/>
<error to="failEmailaction"/>
</action>

使用 spark-submit 我得到了同样的错误,我通过传递所需的 jar 来纠正它。在 oozie 中,即使我通过罐子,它也会抛出错误。

【问题讨论】:

【参考方案1】:

我发现“--files /etc/hbase/conf/hbase-site.xml”在与 oozie 集成时不起作用。我在 oozie spark 动作中使用文件标记传递 hbase-site.xml,如下所示。现在可以正常使用了

<file>file:///etc/hbase/conf/hbase-site.xml</file>

【讨论】:

以上是关于Pyspark Phoenix 集成在 oozie 工作流程中失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在 oozie 4.2.0 上运行火花动作(pyspark 脚本)?

我应该在 spark-defaults.conf 添加哪些行才能使用 pyspark 中的 phoenix?

hbase与phoenix集成

HBase集成Phoenix创建二级索引

CDH6.3.2 启用Kerberos 集成使用phoenix

CDH6.3.2 启用Kerberos 集成使用phoenix