欢迎光临散文网 会员登陆 & 注册

2个案例带你了解万能的CombineByKey!

2023-03-02 16:43 作者:ingemar-  | 我要投稿

combineByKey是Spark中一个比较核心的高级且底层函数,其他一些高阶键值对函数底层都是用它实现的。诸如 groupByKey,reduceByKey等等

如下解释下3个重要的函数参数:

·  createCombiner: V => C ,这个函数把当前的值作为参数,此时我们可以对其做些附加操作(类型转换)并把它返回 (这一步类似于初始化操作)

· mergeValue: (C, V) => C,该函数把元素V合并到之前的元素C(createCombiner)上 (这个操作在每个分区内进行)

· mergeCombiners: (C, C) => C,该函数把2个元素C合并 (这个操作在不同分区间进行)。


案例1:实现将相同Key的Value进行合并,使用groupBy很容易实现


案例2:求解平均分的案例


· 作用

对数据集按照 Key 进行聚合

· 调用

  combineByKey(createCombiner, mergeValue, mergeCombiners, [partitioner], [mapSideCombiner], [serializer])

· 参数

createCombiner 将 Value 进行初步转换

mergeValue 在每个分区把上一步转换的结果聚合

mergeCombiners 在所有分区上把每个分区的聚合结果聚合

partitioner 可选, 分区函数

mapSideCombiner 可选, 是否在 Map 端 Combine

serializer 序列化器

· 注意点

combineByKey 的要点就是三个函数的意义要理解

groupByKey, reduceByKey 的底层都是 combineByKey


案例代码


2个案例带你了解万能的CombineByKey!的评论 (共 条)

分享到微博请遵守国家法律