阅读pyspark
文档我知道foreach的完成时间如下:
def f(x): print(x)
sc.parallelize([1, 2, 3, 4, 5]).foreach(f)
但是,如果我使用带有多个参数的函数怎么办?
一个例子:
def f(x,arg1,arg2,arg3):
print(x*arg1+arg2+arg3)
重点是使用类似这种语法的东西:
sc.parallelize([1, 2, 3, 4, 5]).foreach(f(arg1=11,arg2=21,arg3=31))
答案 0 :(得分:3)
您可以制作partial
功能:
from functools import partial
sc.parallelize([1, 2, 3, 4, 5]).foreach(
partial(f, arg1=11, arg2=21, arg3=31)
)
partial
将一个函数和一系列未命名(*args
)和命名(**kwargs
)参数作为输入,并生成一个 new 函数,如果您调用该函数将调用原始函数f
,其中已填写未命名和已命名的参数。