Spark groupByKey

spark outline

大纲目录

Spark groupByKey 功能

按照Key重新分组

案例演示

需求:将相同key对应值聚合到一个seq中,并计算相同key对应值的相加结果

package com.xcu.bigdata.spark.core.pg02_rdd.pg022_rdd_transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Desc : 按照Key重新分组
 */
object Spark14_GroupByKey {
  def main(args: Array[String]): Unit = {
    //创建配置文件
    val conf: SparkConf = new SparkConf().setAppName("Spark14_GroupByKey").setMaster("local[*]")
    //创建SparkContext,该对象是提交的入口
    val sc = new SparkContext(conf)
    //创建RDD
    val rdd: RDD[(String, Int)] = sc.makeRDD(List(("a", 1), ("b", 5), ("a", 5), ("b", 2)))
    //先来回顾一下groupBy
    //指定key,然后进新分组
    val resRDD: RDD[(String, Iterable[(String, Int)])] = rdd.groupBy((x: (String, Int)) => x._1)
    //打印输出
    resRDD.collect().foreach(println)
    //输出结果
    //(a,CompactBuffer((a,1), (a,5)))

    println("***************************************")
    //groupByKey 使用
    val groupByKeyRDD: RDD[(String, Iterable[Int])] = rdd.groupByKey()
    val resRDD1: RDD[(String, Int)] = groupByKeyRDD.map {
      case (key, datas) => {
        (key, datas.sum)
      }
    }
    //打印输出
    resRDD1.collect().foreach(println) 
    /*
	(a,6)
	(b,7)
	*/
    //释放资源
    sc.stop()
  }
}

版权声明:本文为qq_43192537原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。