繁体   English   中英

将类函数传递给 PySpark RDD

[英]Passing class functions to PySpark RDD

我在这里的 Python 文件中有一个名为 some_class() 的类:

/some-folder/app/bin/file.py

我将它导入到我的代码中:

/some-folder2/app/code/file2.py

经过

import sys
sys.path.append('/some-folder/app/bin')
from file import some_class

clss = some_class()

我想在火花地图中使用这个类的名为 some_function 的函数

sc.parallelize(some_data_iterator).map(lambda x: clss.some_function(x))

这给了我一个错误:

No module named file

而 class.some_function 当我在 pyspark 的 map 函数之外调用它时,即通常但不在 pySpark 的 RDD 中。 我认为这与pyspark有关。 我不知道我哪里出错了。

我试过广播这门课,但仍然没有奏效。

所有 Python 依赖项都必须出现在工作节点的搜索路径上,或者使用SparkContext.addPyFile方法手动分发,因此这样的事情应该可以解决问题:

sc.addPyFile("/some-folder/app/bin/file.py")

它将文件复制到所有工作人员并放置在工作目录中。

附带说明,请不要使用file作为模块名称,即使它只是一个示例。 在 Python 中隐藏内置函数不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM