Pyspark DataFrames上的自定义聚合



我有一个带有一个列的pyspark数据框,作为一个热编码的向量。我想通过groupby

来汇总一个不同的热编码向量

例如。df[userid,action] Row1: ["1234","[1,0,0]] Row2: ["1234", [0 1 0]]

我希望输出为行: ["1234", [ 1 1 0]],因此向量是由 userid分组的所有向量的总和。

我该如何实现?pyspark和汇总操作不支持向量添加。

您有几个选择:

  1. 创建一个用户定义的聚合功能。问题是您需要在Scala中编写用户定义的聚合功能,并将其包装在Python中。
  2. 您可以使用collect_list函数将所有值收集到列表中,然后编写一个UDF以组合它们。
  3. 您可以移至RDD并使用键的聚合或汇总。

两个选项2&3将相对效率低下(CPU和存储器的成本)。

相关内容

  • 没有找到相关文章