在pyspark中将Python模块发送到其他节点

34 投票
2 回答
31824 浏览
提问于 2025-04-18 12:52

我该如何将用C语言编译的模块(比如python-Levenshtein)发送到每个Spark集群中的节点呢?

我知道可以通过独立的Python脚本在Spark中发送Python文件(下面是示例代码):

from pyspark import SparkContext
sc = SparkContext("local", "App Name", pyFiles=['MyFile.py', 'MyOtherFile.py'])

但是在没有'.py'文件的情况下,我该如何发送这个模块呢?

2 个回答

49

如果你能把你的模块打包成一个 .egg.zip 文件,那么在创建你的 SparkContext 时,你应该能在 pyFiles 中看到它(或者你也可以稍后通过 sc.addPyFile 来添加它)。

对于使用 setuptools 的 Python 库,你可以运行 python setup.py bdist_egg 来生成一个 egg 格式的分发包。

另外一个选择是将库安装到整个集群中,你可以在每台机器上使用 pip 或 easy_install,或者通过共享一个 Python 安装在集群的文件系统上(比如 NFS)来实现。

撰写回答