pg2*_*455 1 python apache-spark rdd pyspark
我在Python文件中有一个名为some_class()的类:
/some-folder/app/bin/file.py
Run Code Online (Sandbox Code Playgroud)
我将它导入我的代码:
/some-folder2/app/code/file2.py
Run Code Online (Sandbox Code Playgroud)
通过
import sys
sys.path.append('/some-folder/app/bin')
from file import some_class
clss = some_class()
Run Code Online (Sandbox Code Playgroud)
我想在spark的map中使用这个类名为some_function的函数
sc.parallelize(some_data_iterator).map(lambda x: clss.some_function(x))
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
No module named file
Run Code Online (Sandbox Code Playgroud)
而class.some_function当我在pyspark的map函数之外调用它时,即通常但不在pySpark的RDD中.我认为这与pyspark有关.我不知道我在哪里错了.
我尝试播放这个课程但仍然无法正常工作.
所有Python依赖项都必须存在于工作节点的搜索路径上,或者使用SparkContext.addPyFile方法手动分发,所以这样的事情应该可以解决问题:
sc.addPyFile("/some-folder/app/bin/file.py")
Run Code Online (Sandbox Code Playgroud)
它会将文件复制到所有工作者并放在工作目录中.
请注意,请不要将其file用作模块名称,即使它只是一个示例.在Python中隐藏内置函数并不是一个好主意.
| 归档时间: |
|
| 查看次数: |
2118 次 |
| 最近记录: |