我有一个带有一个列的pyspark数据框,作为一个热编码的向量。我想通过groupby
来汇总一个不同的热编码向量例如。df[userid,action] Row1: ["1234","[1,0,0]] Row2: ["1234", [0 1 0]]
我希望输出为行: ["1234", [ 1 1 0]]
,因此向量是由 userid
分组的所有向量的总和。
我该如何实现?pyspark和汇总操作不支持向量添加。
您有几个选择:
- 创建一个用户定义的聚合功能。问题是您需要在Scala中编写用户定义的聚合功能,并将其包装在Python中。
- 您可以使用collect_list函数将所有值收集到列表中,然后编写一个UDF以组合它们。
- 您可以移至RDD并使用键的聚合或汇总。
两个选项2&3将相对效率低下(CPU和存储器的成本)。