我有一个具有以下结构的大型PySpark数据帧,其中k_ *是键,其他列是“数据”列(数字):
k_a k_b k_c d e
a 1 x 4 7
a 1 x 5 8
b 3 x 6 9
...
我要做的是基于切片进行一些计算,这需要使用特定的自定义UDF来完成。但是,此函数应接收“切片”,其中切片由键的唯一组合定义:
(k_a=1; k_b=1; k_c=x:)
d e
---
4 7
5 8
------------------
(k_a=b; k_b=3; k_c=x:)
d e
---
6 9
此外,此UDF产生值列表(一行),因此目标是通过将UDF应用于所有切片来产生新的数据帧。 我的第一种方法是仅将键的现有唯一组合传递给UDF,然后过滤UDF内的数据帧,但是该数据帧太大而无法广播,因此我无法采用这种方法。您是否对使用PySpark的分布式计算功能执行此操作有任何想法?