目录

  • ​​spark outline​​
  • ​​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()
}
}