PySpark 调用 Python 第三方库 (ImportError: No module named ......)

PySpark 是 Spark 提供的基于Python 的API,支持Python2和Python3。在开发 PySpark 应用时,可以调用Python的标准库、第三方库以及自定义模块,提高开发效率。需要注意的是,在本地模式下,直接按照Python脚本风格编写的代码在运行时往往不会有什么问题,但在集群模式下则会触发 ImportError,提示找不到第三方库或模块。这是因为 PySpark 需要在各个执行节点的机器上执行操作,而与操作相关的文件存在本地。要解决这个问题,需要将这些文件发送到各个节点上,具体方法包括:

1. 在集群的各个节点上统一安装需要的第三方库,但是这种方法不能解决自定义模块的相同问题,同时需要较高的操作权限;

2. 让 PySpark 自动添加本地文件到各个节点,这种方法可以解决第三方库和自定义模块的引用错误的问题,同时有两种途径:

(1) 使用 spark-submit 命令行参数 --py-files, 可参考 spark-submit --help

(2) 使用SparkContext实例方法 addPyFile,可参考(http://spark.apache.org/docs/latest/api/python/pyspark.html#pyspark.SparkContext.addPyFile)

在第二种方式下,可以将本地安装的第三方库文件或自定义模块打包成zip文档,但需要注意内部文件的组织结构,确保文件解压后的引用关系成立。以 jieba 为例,可以按照如下方式进行文件打包。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值