【发布时间】:2018-02-21 13:55:21
【问题描述】:
我在名为 end_stats_df 的 pyspark 数据框中有以下数据:
values start end cat1 cat2
10 1 2 A B
11 1 2 C B
12 1 2 D B
510 1 2 D C
550 1 2 C B
500 1 2 A B
80 1 3 A B
我想通过以下方式聚合它:
- 我想使用“开始”和“结束”列作为聚合键
- 对于每组行,我需要执行以下操作:
- 计算
cat1和cat2中该组的唯一值数。例如,对于start=1 和end=2 的组,这个数字将是4,因为有A、B、C、D。这个数字将被存储为n(本例中n=4) . - 对于
values字段,对于每个组,我需要对values进行排序,然后选择每个n-1值,其中n是上面第一个操作中存储的值。 - 在聚合结束时,我真的不关心在上述操作之后
cat1和cat2中的内容。
- 计算
上面示例的示例输出是:
values start end cat1 cat2
12 1 2 D B
550 1 2 C B
80 1 3 A B
如何使用 pyspark 数据框完成?我假设我需要使用自定义 UDAF,对吗?
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql rdd