【问题标题】:Getting average across keys in Spark在 Spark 中获取键的平均值
【发布时间】:2015-09-07 09:18:58
【问题描述】:

如何计算 Spark 中键的平均值?

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    我们可以使用 combineByKeyfoldByKey 在 Spark 中计算跨键的平均值。

    foldByKey

    foldByKey(initialValue)((initialValue,inputDataValue) => { //code })
    

    输入数据:

    employee,department,salary
    e1,d1,100
    e2,d1,500
    e5,d2,200
    e6,d1,300
    e7,d3,200
    e7,d3,500
    

    末尾的 1 用于计数。被折叠输入的类型和初始值必须匹配

    val depSalary = data.map(_.split(',')).map( x=> (x(1),(x(2).toInt,1)))   
    
    val dummy = (0,0)
    val depSalarySumCount = depSalary.foldByKey(dummy)((startValue,data)  => ( startValue._1 + data._1 , startValue._2 +data._2  ) )   
    
    val result =  depSalarySumCount.map(x => (x._1, (x._2._1/x._2._2) ))
    result.collect
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多