当前位置: 首页 > article >正文

利用Spark实现WordCount(Scala语言)

Scala 是一种多范式的编程语言,它结合了面向对象和函数式编程的特点。由Martin Odersky于2001年开始开发,并在2004年正式发布。Scala的设计哲学是在同一个源文件中无缝地融合这两种编程范式,旨在提供一种简洁、高效和可扩展的语言。

“WordCount” 是一个在数据处理和文本分析中非常经典的程序,它的目的是统计文本数据集中每个单词出现的次数。

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

object WordCount {
  def main(args: Array[String]): Unit = {
    // 创建Spark配置对象,设置应用程序名称为"Word Count",并指定运行模式为本地模式,使用所有可用的核心
    val conf = new SparkConf().setAppName("Word Count").setMaster("local[*]")

    // 创建SparkContext对象,这是与Spark集群交互的入口点
    val sc = new SparkContext(conf)

    // 从指定的路径读取文本文件,并创建一个RDD对象,每个元素代表输入文件中的一行
    val input: RDD[String] = sc.textFile("path/to/your/input.txt")

    // 使用flatMap转换操作,将每一行拆分成单词,并返回一个包含所有单词的RDD
    // _.split(" ")将每行按空格拆分成单词数组,flatten将其展平为一个单词序列
    val words: RDD[String] = input.flatMap(_.split(" "))

    // 使用map转换操作,将每个单词映射成一个键值对,键是单词,值是1
    // 这将创建一个包含(word, 1)对的RDD
    val pairs: RDD[(String, Int)] = words.map(word => (word, 1))

    // 使用reduceByKey转换操作,对每个单词出现的次数进行聚合
    // (a, b) => a + b是一个聚合函数,它将相同键的值相加
    val wordCounts: RDD[(String, Int)] = pairs.reduceByKey(_ + _)

    // 使用collect操作,将结果收集到驱动程序端,并打印出来
    // collect()方法将RDD中的所有元素收集到一个数组中
    // foreach用于遍历数组,并打印每个键值对
    wordCounts.collect().foreach(println)

    // 停止SparkContext,释放资源
    sc.stop()
  }
}


http://www.kler.cn/a/472229.html

相关文章:

  • 洛谷:P1540 [NOIP2010 提高组] 机器翻译
  • 代码随想录day38 动态规划6
  • 搭建企业AI助理的创新应用与案例分析
  • C++ 中如何优雅地返回一个递归闭包函数?
  • python制作翻译软件
  • Bash Shell的操作环境
  • 【C】文件操作
  • CUDA编程【7】 线程束
  • 青少年编程与数学 02-006 前端开发框架VUE 10课题、侦听器
  • STM32-笔记35-DMA(直接存储器访问)
  • Approaching a Chatbot Service - Part 3: Bot Model
  • flask后端开发(13):登录功能后端实现和钩子函数
  • 扩散模型论文概述(三):Stability AI系列工作【学习笔记】
  • 基于RK3568/RK3588大车360度环视影像主动安全行车辅助系统解决方案,支持ADAS/DMS
  • 关于常见的负载均衡方法都有什么?
  • labelme转yolo格式
  • 计算机网络 (23)IP层转发分组的过程
  • R语言的循环实现
  • 前端开发 vue 中如何实现 u-form 多个form表单同时校验
  • Estimator (Statistic for Machine Learning)
  • 深入探讨 Android 中的 AlarmManager:定时任务调度及优化实践
  • AI赋能房地产:利用AI前端技术提升VR/AR浏览体验
  • IO模型与NIO基础
  • 【Uniapp-Vue3】v-if条件渲染及v-show的选择对比
  • 第07章 存储管理(一)
  • 第82期 | GPTSecurity周报