Arl*_*oev 7 python apache-spark pyspark
有没有正确的方法使用 python 将复杂的依赖项提交到 Spark 中?我在网上搜索时发现了以下方法:
def import_pymystem3(x):
import pymystem3
return x
int_rdd = spark.sparkContext.parallelize([1,2,3,4])
int_rdd.map(lambda x: import_pymystem3(x))
int_rdd.collect()
Run Code Online (Sandbox Code Playgroud)
然而,由于map()
使用的原因,这种访问导入的方式很不方便:从内部访问外部库map()
会禁止在其他 RDD 上使用此导入。
Apache 文档建议--py-files
,这就是我的做法:
创建dependency.txt,列出我使用的所有依赖项,然后
sudo python36 -m pip install dependencies -r requirements.txt
sudo zip -r ../dependencies/zip .
最后spark-submit --executor-memory 50g --driver-memory 50g --py-files [path to requirements.zip] [path to project.py]
这就是我所看到的:NotADirectoryError: [Errno 20] Not a directory: '/home/.../dependencies/dependencies.zip/sklearn/__check_build'
此外,其他导入也不会加载:ModuleNotFoundError: No module named 'nltk'
是否有任何使用 pyspark 将复杂库提交到 apache Spark 集群的工作方法?所有需要的包都安装在工作节点上。
您正在系统(或环境)中安装依赖项。如果你想制作一个zip文件,你应该指明目标路径。在 pip 命令中,
这是您的编码改编:
# Sudo should not be needed
python36 -m pip install -t ./dependencies -r requirements.txt
zip -r dependencies.zip ./dependencies
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2096 次 |
最近记录: |