【问题标题】:Why --py-files is not supported in zeppelin?为什么 zeppelin 不支持 --py-files?
【发布时间】: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)
  1. 在 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 会抛出错误?

  2. 当我通过 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


【解决方案1】:

如果你有 python 依赖包spark_utils.zip 包含

src/hdfs_utils.py

你可以用两种方式使用它

sc.addPyFile

%pyspark

sc.addPyFile("/mnt/zeppelin/python-packages/spark_utils.zip")
from src.hdfs_utils import get_hdfs_paths, delete_path

spark.submit.pyFiles

另一种方式,配置spark.submit.pyFiles

%spark.conf

# python venv
PYSPARK_PYTHON               /mnt/zeppelin/python-venv/bin/python
PYSPARK_DRIVER_PYTHON        /mnt/zeppelin/python-venv/bin/python

# dependency
spark.submit.pyFiles /mnt/zeppelin/python-packages/spark_utils.zip

你可以像这样使用它:

%pyspark

from src.hdfs_utils import get_hdfs_paths, delete_path

第一次使用动态加载进行开发

第二个在prod的配置文件中使用预定义的pakcage

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 2018-01-29
    • 2011-03-17
    • 2018-07-21
    • 2013-01-04
    • 2017-10-07
    • 2018-08-24
    • 2011-09-16
    相关资源
    最近更新 更多