在spark上运行Python脚本遇到“ImportError: No module name xxxx”

在spark上运行Python脚本遇到“ImportError: No module name xxxx”

这是因为运行Python脚本的集群上的Python环境里缺乏脚本运行需要的依赖。

根据所需依赖的不同性质可以分为3类:

(1)单个的*.py或者*.py[co]

(2)自建模块

(3)自包含的依赖项

(4)复杂依赖

【1】只依赖于单个文件(only depend on a sigle file)

(1)可以通过使用spark-submit命令中的—py-files选项并指定文件的本地路径,将依赖文件提供给所有的执行程序。

/opt/spark/bin/spark-submit --master yarn-cluster --py-files dependency.py my_script.py

(2)使用sc.addPyFiles(path)函数(文件路径作为参数)以编程的方式将所需文件添加到SparkContext。

sc = SparkContext(master=”yarn-cluster”,appName=”myApp”)

sc.addPyFile(file_path)

【2】自建模块

比如在Python脚本中使用了

from model.file import *

那么就需要将model文件夹进行打包。注意打包指令要在文件所在的父目录下进行。比如文件夹model的路径为/home/workspace/model,那么就要保证打包命令是在/home/workspace/下进行的,但这样打包会将workspace文件夹下的文件全部打包。

zip -r ../my_dependencies.zip .

备注:这样操作的原因是,要确保所需文件在*.zip的顶层(ensure that the modules are the in the top level of the zip file),即当解

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值