我是Scala Spark的程序员,但我需要在项目中使用PySpark在Python中做一些事情 . 我想知道如何在PySpark中使用自定义的row =>行映射转换 .
例如:我有一个数据帧mydf:
id x1, x2
1 5 3
2 4 6
3 9 10
我想将此数据帧转换为另一个数据帧,并在每一行上执行映射操作 .
所以我设计了一个map函数,它以一行作为输入,并生成一个新行作为输出 . 所以它是一个Row => Row map:
def mySum (row):
id = row.id
result = row.x1 + row.x2
return Row(id, result)
然后我想在python中使用,这与我在Scala中的操作类似
mynewdf = mydf.map( x=> mySum(x))
所以预期的结果如下:
id result
1 8
2 10
3 19
实际上,自定义函数非常复杂,所以我需要一个单独的函数来描述它 .
我怎么能用PySpark在Python中做到这一点 . 谢谢,
1 回答
等效的是
lambda
函数:但是如果函数只将行作为参数,则可以直接将函数传递给
map
: