PeC*_*aDe 2 python foreach pyspark
阅读pyspark文档我知道 foreach 是这样完成的:
def f(x): print(x)
sc.parallelize([1, 2, 3, 4, 5]).foreach(f)
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用带有多个参数的函数怎么办?
一个例子:
def f(x,arg1,arg2,arg3):
print(x*arg1+arg2+arg3)
Run Code Online (Sandbox Code Playgroud)
关键是使用类似于以下语法的东西:
sc.parallelize([1, 2, 3, 4, 5]).foreach(f(arg1=11,arg2=21,arg3=31))
Run Code Online (Sandbox Code Playgroud)
您可以创建一个partial函数:
from functools import partial
sc.parallelize([1, 2, 3, 4, 5]).foreach(
partial(f, arg1=11, arg2=21, arg3=31)
)Run Code Online (Sandbox Code Playgroud)
partial将一个函数和一系列未命名 ( *args) 和命名 ( **kwargs) 参数作为输入,并生成一个新函数,如果您调用该函数,将调用原始函数f,其中未命名和命名参数已填充。
| 归档时间: |
|
| 查看次数: |
2012 次 |
| 最近记录: |