PySpark数据帧上的自定义聚合

时间:2016-12-07 19:53:26

标签: apache-spark pyspark apache-spark-sql aggregate-functions user-defined-functions

我有一个PySpark DataFrame,其中一列作为一个热编码向量。我想在groupby之后通过向量加法来聚合不同的一个热编码向量

e.g。 df[userid,action] Row1: ["1234","[1,0,0]] Row2: ["1234", [0 1 0]]

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

我怎样才能做到这一点? PySpark sum聚合操作不支持向量加法。

1 个答案:

答案 0 :(得分:8)

您有几种选择:

  1. 创建用户定义的聚合函数。问题是您需要documentationwrite the user defined aggregate function in scala
  2. 您可以使用collect_list函数将所有值收集到列表中,然后编写UDF以组合它们。
  3. 您可以移至RDD并按键使用聚合或聚合。
  4. 两个选项2& 3效率相对较低(耗费CPU和内存)。