• foldByKey和combineByKey


    函数签名
    def foldByKey(zeroValue: V)(func: (V, V) => V): RDD[(K, V)]
    函数说明
    当分区内计算规则和分区间计算规则相同时,aggregateByKey 就可以简化为 foldByKey
    val dataRDD1 = sparkContext.makeRDD(List(("a",1),("b",2),("c",3)))
    val dataRDD2 = dataRDD1.foldByKey(0)(_+_)
    

      

    combineByKey
     
    函数签名
    def combineByKey[C](
     createCombiner: V => C,
     mergeValue: (C, V) => C,
     mergeCombiners: (C, C) => C): RDD[(K, C)]
    

      

    函数说明
    最通用的对 key-value 型 rdd 进行聚集操作的聚集函数(aggregation function)。类似于
    aggregate(),combineByKey()允许用户返回值的类型与输入不一致。
    小练习:将数据 List(("a", 88), ("b", 95), ("a", 91), ("b", 93), ("a", 95), ("b", 98))求每个 key 的平
    均值
    val list: List[(String, Int)] = List(("a", 88), ("b", 95), ("a", 91), ("b", 93), 
    ("a", 95), ("b", 98))
    val input: RDD[(String, Int)] = sc.makeRDD(list, 2)
    val combineRdd: RDD[(String, (Int, Int))] = input.combineByKey(
     (_, 1),
     (acc: (Int, Int), v) => (acc._1 + v, acc._2 + 1),
     (acc1: (Int, Int), acc2: (Int, Int)) => (acc1._1 + acc2._1, acc1._2 + acc2._2)
    )
    

      

  • 相关阅读:
    SAX解析xml,小实例
    Pull解析xml,小实例
    TCP通信小实例
    android 获取手机信息
    mysql创建用户与授权
    java执行SQL脚本文件
    IOUtils.readFully()的使用
    下载工具类
    vue element ui 父组件控制子组件dialog的显隐
    springboot-mybatis配置多数据源
  • 原文地址:https://www.cnblogs.com/huaobin/p/15922911.html
Copyright © 2020-2023  润新知