【发布时间】:2018-07-10 06:55:11
【问题描述】:
我有一个具有以下方案的数据:
sourceip
destinationip
packets sent
我想从这些数据中计算出几个聚合字段并具有以下架构:
ip
packets sent as sourceip
packets sent as destination
在 RDD 的快乐日子里,我可以使用 aggregate,定义 {ip -> []} 的映射,并在相应的数组位置计算出现次数。
在数据集/数据框聚合不再可用,而是可以使用 UDAF,不幸的是,根据我使用 UDAF 的经验,它们是不可变的,这意味着它们不能被使用(必须在每次地图更新时创建一个新实例) example + explanation here
一方面,从技术上讲,我可以将数据集转换为 RDD、聚合等,然后返回数据集。我预计这会导致性能下降,因为数据集更加优化。由于复制,UDAF 是不可能的。
还有其他方法可以执行聚合吗?
【问题讨论】:
标签: apache-spark apache-spark-sql