簡體   English   中英

如何在pyspark中正確使用rdd.map中的模塊

[英]How to correctly use modules in rdd.map with pyspark

顧名思義,我正在嘗試創建外部模塊,這些模塊隨后將在一個簡單的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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM