【发布时间】:2022-03-14 12:45:55
【问题描述】:
我有一个 python 包,其中包含许多内置在 .egg 文件中的模块,我想在 zeppelin notebook 中使用它。根据 zeppelin 文档,要将这个包传递给 zeppelin spark 解释器,您可以通过 conf/zeppelin-env.sh 中 SPARK_SUBMIT_OPTIONS 中的 --files 选项将其导出。我对此有以下疑问:
-
1234563选项不起作用(ImportError: No module named XX.xx)
在 zeppelin 的 SPARK_SUBMIT_OPTIONS 中通过 --py-files 选项添加 .egg 文件会导致错误:
Error: --py-files given but primary resource is not a Python script.根据我的理解,SPARK_SUBMIT_OPTIONS 中给出的任何内容都会传递给 spark-submit 命令,但为什么 --py-files 会抛出错误?当我通过 SPARK_SUBMIT_OPTIONS 中的 --files 选项添加 .egg 时,zeppelin notebook 不会抛出错误,但我无法在 zeppelin notebook 中导入模块。
传递.egg文件zeppelin spark解释器的正确方法是什么?
Spark 版本是 1.6.2,zeppelin 版本是 0.6.0
zepplein-env.sh 文件包含以下内容:
export SPARK_HOME=/home/me/spark-1.6.1-bin-hadoop2.6
export SPARK_SUBMIT_OPTIONS="--jars /home/me/spark-csv-1.5.0-s_2.10.jar,/home/me/commons-csv-1.4.jar --files /home/me/models/Churn-zeppelin/package/build/dist/fly_libs-1.1-py2.7.egg"
【问题讨论】:
-
您使用的是哪个版本的 Spark/Zepplin?
-
你也可以发布整个命令吗?
-
Spark 版本 1.6.2 和 zeppelin 0.6.0
-
@MeethuMathew:你最终解决了这个问题吗?我看到的和 Zeppelin 0.7.0 指向 Spark 2.1.0 的情况完全一样。我看到您还在issues.apache.org/jira/browse/ZEPPELIN-2136 上提出了JIRA 问题。是的,
sc.addPyFile()可以解决它,但与 Zeppelin 的其他用户共享多个依赖项并不实际。另一种解决方法是在所有节点上的站点包中安装你的鸡蛋,然后使用zeppelin-env.sh中的PYSPARK_PYTHON变量来提供python 的路径(包括可执行文件本身)。所有节点上的路径必须相同。 -
@snark sc.addPyFile()
标签: python pyspark apache-zeppelin