Spark中使用RDD算子GroupBy做词频统计的方法

测试文件及环境

测试文件在本地D://tmp/spark.txt,Spark采用Local模式运行,Spark版本3.2.0,Scala版本2.12,集成idea开发环境。

复制代码
hello
world
java
world
java
java

实验代码

scala 复制代码
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object GroupBy {
  def main(args: Array[String]): Unit = {
  	// 创建Spark执行环境
    val sparkConf: SparkConf =
      new SparkConf().setMaster("local").setAppName("GroupBy")
    // 新建会话
    val sc = new SparkContext(sparkConf)
	// 读取本地文件到RDD
    val rdd: RDD[String] = sc.textFile("D://tmp/spark.txt")
    // 对rdd做map映射,返回(hello,1)...
    val rdd2: RDD[(String, Int)] = rdd.map(v => {
      val arr: Array[String] = v.split("\t")
      (arr(0), 1)
    })
	// 打印map映射结果
    rdd2.foreach(v=>println(v))

	// 对rdd2进行groupBy操作
    val rdd3: RDD[(String, Iterable[(String, Int)])] = rdd2.groupBy(v => v._1)
    // 遍历打印最终结果
    rdd3.map(v => (v._1, v._2.size)).foreach(v => println(v))
	//结束Spark会话
    sc.stop()
  }
}

实验结果

打印map映射结果

复制代码
(hello,1)
(world,1)
(java,1)
(world,1)
(java,1)
(java,1)

(hello,1)
(java,3)
(world,2)
相关推荐
程序猿阿伟30 分钟前
《分布式软总线牵手云服务,拓展应用新维度》
分布式
恒拓高科WorkPlus34 分钟前
BeeWorks:打造安全可控的企业内网即时通讯平台
大数据·人工智能·安全
恒拓高科WorkPlus2 小时前
一款安全好用的企业即时通讯平台,支持统一门户
大数据·人工智能·安全
Debug_TheWorld2 小时前
Kafka学习
大数据·中间件
掘金-我是哪吒3 小时前
分布式微服务系统架构第102集:JVM调优支撑高并发、低延迟、高稳定性场景
jvm·分布式·微服务·架构·系统架构
迷人的小荔枝3 小时前
spark-core
spark
不要不开心了4 小时前
sparkcore编程算子
pytorch·分布式·算法·pygame
java1234_小锋4 小时前
Zookeeper的典型应用场景?
分布式·zookeeper·云原生
BenBen尔5 小时前
spark的堆外内存,是在jvm内还是操作系统内存内?
大数据·jvm·hadoop·spark
乌旭5 小时前
从Ampere到Hopper:GPU架构演进对AI模型训练的颠覆性影响
人工智能·pytorch·分布式·深度学习·机器学习·ai·gpu算力