我有以下困境
我玩RDD [(key0,data),(key1,data),(key0,data),..] 在按键
处理之前,我需要使用类似的密钥聚合所有数据第一个想法是遍历所有不同的密钥,并且对于每个密钥,检索(过滤)使用相同密钥映射的所有数据。通过这种方式,我仍然可以对结果结构(RDD)执行并行操作,但如果有很多键(很多次迭代),效率很低。
第二个想法是使用自定义分区器(与不同的键一样多的分区)对数据进行分区。然后,执行mappartition ..但是,在每个分区中,我们只能按顺序处理数据(Iterable ..) ..如果有很多数据,效率低......
有什么想法吗?或者确实存在第三个神奇的想法? 感谢
答案 0 :(得分:0)
问题缺乏确定所需的详细程度,但看起来rdd.reduceByKey(aggregation)
或rdd.aggregateByKey(zero)(aggregator,reducer)
符合需求。
答案 1 :(得分:0)
感谢您的帮助..
因此,通过在同一个集合(Buffer,List,...)中聚合数据(按键), 我可以对它们进行回归..但是生成的集合可能太大而无法驻留在单个节点上