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)
相关推荐
岁岁种桃花儿2 小时前
SpringCloud从入门到上天:分布式和微服务基础
分布式·spring cloud·微服务
上海锟联科技7 小时前
DAS 系统 250MSPS 是否足够?——来自上海锟联科技的专业解析
分布式·科技·分布式光纤传感·光频域反射·das
那就学有所成吧(˵¯͒¯͒˵)11 小时前
大数据项目(一):Hadoop 云网盘管理系统开发实践
大数据·hadoop·分布式
KKKlucifer11 小时前
数据资产地图构建:文档安全可视化与主动防御
大数据·安全
2501_9436953312 小时前
高职工业大数据应用专业,怎么找智能制造企业的数据岗?
大数据·信息可视化·制造
得赢科技13 小时前
智能菜谱研发公司推荐 适配中小型餐饮
大数据·运维·人工智能
Hello.Reader13 小时前
Flink 内存与资源调优从 Process Memory 到 Fine-Grained Resource Management
大数据·flink
有代理ip14 小时前
成功请求的密码:HTTP 2 开头响应码深度解析
java·大数据·python·算法·php
jl486382114 小时前
打造医疗设备的“可靠视窗”:医用控温仪专用屏从抗菌设计到EMC兼容的全链路解析
大数据·运维·人工智能·物联网·人机交互
刺客xs15 小时前
git 入门常用命令
大数据·git·elasticsearch