GroupByKey,ReduceByKey
package com.shujia.spark.core import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object Demo6GroupByKey { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf() .setAppName("map") .setMaster("local") //spark 上下文对象 val sc = new SparkContext(conf) val linesRDD: RDD[String] = sc.textFile("data/words.txt") val wordsRDD: RDD[String] = linesRDD.flatMap(_.split(",")) //将rdd转换成kv格式 val kvRDD: RDD[(String, Int)] = wordsRDD.map(word => (word, 1)) /** * groupByKey: 通过key进行分组,将value 放到迭代器中 * groupBy: 指定一个分组的列, * * 都会产生shuffle */ val groupByKeyRDD: RDD[(String, Iterable[Int])] = kvRDD.groupByKey() val countyRDD: RDD[(String, Int)] = groupByKeyRDD.map { case (word: String, values: Iterable[Int]) => (word, values.sum) } countyRDD.foreach(println) val groupByRDD: RDD[(String, Iterable[(String, Int)])] = kvRDD.groupBy(kv => kv._1) } }
package com.shujia.spark.core import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.rdd.RDD object Demo7ReduceByKey { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf() .setAppName("map") .setMaster("local") //spark 上下文对象 val sc = new SparkContext(conf) val linesRDD: RDD[String] = sc.textFile("data/words.txt") val wordsRDD: RDD[String] = linesRDD.flatMap(_.split(",")) //将rdd转换成kv格式 val kvRDD: RDD[(String, Int)] = wordsRDD.map(word => (word, 1)) /** * reduceByKey: 对同一个key的value进行聚合处理 * */ val countRDD: RDD[(String, Int)] = kvRDD.reduceByKey((i: Int, j: Int) => i + j) countRDD.foreach(println) ////简写,如果参数只是用了一次,可以通过下划线代替 val count2: RDD[(String, Int)] = kvRDD.reduceByKey(_ + _) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署