当前位置: 代码迷 >> python >> 如何在pyspark中正确使用rdd.map中的模块
  详细解决方案

如何在pyspark中正确使用rdd.map中的模块

热度:106   发布时间:2023-06-27 21:47:02.0

顾名思义,我正在尝试创建外部模块,这些模块随后将在一个简单的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'

有人可以指出错误吗?

非常感谢你

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]