2014-07-10 38 views
16

如何将C编译的模块(例如python-Levenshtein)发布到Spark集群中的每个节点?将pyspark中的python模块发送到其他节点?

我知道我可以使用独立的python脚本(下面的示例代码)出货火花Python文件:

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

,但在那里是没有的情况下“的.py”我怎么运输模块?

回答

30

如果你可以打包你的模块为.egg.zip文件,你应该能够构建您的SparkContext时,列出它在pyFiles(或者你可以通过sc.addPyFile以后添加)。

对于使用setuptools的Python库,您可以运行python setup.py bdist_egg来构建egg分发。

另一种选择是通过在每台计算机上使用pip/easy_install或通过在群集范围的文件系统(如NFS)上共享Python安装来在群集范围内安装库。

+0

这工作!我可以使用上面的命令为模块创建egg文件,然后该过程就像在pyFiles参数中添加egg文件一样简单。很酷的东西! – mgoldwasser

+0

让PySpark安装.egg依赖关系的建议?类似于http://stackoverflow.com/questions/32119225/databricks-spark-egg-dependencies-not-installed-automatically – ramhiser

+0

如果我的* .egg文件依赖于其他第三方库,这也会工作吗? – guilhermecgs

相关问题