正如标题所示,我正在尝试创建外部模块,这些模块随后将在简单的rdd.map
函数中导入并调用。下面的示例:
## main.py ##
myrdd = spark.sparkContext.parallelize([1,2,3,4,5])
spark.sparkContext.addPyFile("myModule.py")
import myModule as mm
myrdd.map(lambda x: mm.Module.test(x)).collect()
## myModule.py ##
class Module():
def test(self,x):
return x * 2
尝试通过spark提交运行此消息时,出现以下错误:
test() missing 1 required positional argument: 'x'
有人可以指出错误吗?
非常感谢您
答案 0 :(得分:0)
test()不是类方法,因此您不能直接调用Module.test(x)。
相反,创建一个Module对象并对其进行如下调用test()方法:
myrdd = spark.sparkContext.parallelize([1,2,3,4,5])
spark.sparkContext.addPyFile("myModule.py")
import myModule as mm
myrdd.map(lambda x: mm.Module().test(x)).collect()
[2, 4, 6, 8, 10]