利用scala书写spark程序实现wordCount

实验环境:虚拟机(centos)上创建了三台集群,部署了Hadoop,words文档放在HDFS上的目录下

所用版本如下:

<hadoop.version>2.7.7</hadoop.version>

<spark.version>2.4.5</spark.version>

<scala.version>2.12.10</scala.version>

步骤

代码详解

方法一:

scala 复制代码
object readData {
  def main(args: Array[String]): Unit = {
  	// 创建一个本地运行的 Spark 应用程序,并且设置了应用程序的名称为 "readData"
    val spark=SparkSession.builder().appName("readData").master("local[*]").getOrCreate();
    // HDFS目录路径
    val hdfsPath = "hdfs://你的节点ip:9000/路径/文件名";
    // 读取文本文件
    val lines = spark.read.textFile(hdfsPath).rdd
    // 单词计数
    val wordCounts = lines
      .flatMap(line => line.split(" ")) // 根据空格切分单词
      .map(word => (word, 1))
      .reduceByKey(_ + _)
    // 输出结果
    wordCounts.collect().foreach(println)
    // 停止 SparkSession
    spark.stop();
  }
}

方法二:

scala 复制代码
object readData {
  def main(args: Array[String]): Unit = {
    // HDFS目录路径
    val hdfsPath = "hdfs://你的节点ip:9000/路径/文件名";
	//1. 创建 conf 对象
    val conf = new SparkConf().setAppName("WordCount").setMaster("local[*]")
    //2. 创建 SparkContext 对象:提交应用的入口
    val sc = new SparkContext(conf)
    //3. 执行单词统计
    val res = sc.textFile(hdfsPath).flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect;
    //4. 遍历输出结果
    res.foreach(println);
    // 停止 SparkSession
    sc.stop()
  }
}

说明:

  • 使用 SparkContext 和 SparkConf 是传统的方式,适用于 Spark 1.x 版本。它们提供了基本的 Spark 功能,但使用起来可能相对复杂,需要更多的配置和管理。
  • 使用 SparkSession 是 Spark 2.x 版本中推荐的方式。它集成了 Spark SQL,使得你可以更方便地使用 DataFrame 和 Dataset API 来处理结构化数据,而不需要额外导入其他的 API。此外,SparkSession 也可以自动管理 SparkContext,使得整个应用程序的管理更加简单。
  • flatMap 是一个转换操作,主要用于将结果扁平化(这里是将切分后的文本转换为多个单词作为输出)
  • map 是一个转换操作,它将输入RDD中的每个元素映射为一个新的元素(这里是映射为(key,1)键值对的形式)
  • reduceByKey 是一个转换操作,它将具有相同键的元素聚合在一起,并对它们的值进行合并
相关推荐
鸿乃江边鸟10 小时前
Spark Datafusion Comet 向量化Rust Native--CometShuffleExchangeExec怎么控制读写
大数据·rust·spark·native
伟大的大威1 天前
NVIDIA DGX Spark (ARM64/Blackwell) Kubernetes 集群 + GPU Operator 完整部署指南
大数据·spark·kubernetes
小邓睡不饱耶1 天前
深度实战:Spark GraphX构建用户信任网络,精准锁定高价值目标用户(含完整案例)
大数据·spark·php
B站计算机毕业设计超人1 天前
计算机毕业设计hadoop+spark+hive共享单车预测系统 共享单车数据可视化分析 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·python·深度学习·spark·毕业设计·课程设计
B站计算机毕业设计超人1 天前
计算机毕业设计Python+Spark+Hadoop+Hive微博舆情分析 微博情感分析可视化 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·爬虫·python·spark·cnn·课程设计
yumgpkpm1 天前
华为昇腾300T A2训练、微调Qwen过程,带保姆式命令,麒麟操作系统+鲲鹏CPU
hive·hadoop·华为·flink·spark·kafka·hbase
TTBIGDATA1 天前
【Hue】Ambari开启 Kerberos 后,Hue 使用 Spark SQL出现凭证不统一问题处理
大数据·sql·spark·ambari·kerberos·hue·bigtop
鸿乃江边鸟2 天前
Spark Datafusion Comet 向量化Rust Native--Native算子(CometNativeExec)怎么串联执行
大数据·rust·spark·native
Light602 天前
数智孪生,金流·物流全透视:构建某银行制造业贷后风控新范式—— 基于领码 SPARK 融合平台的技术解决方案
大数据·spark·数字孪生·实时监控·物联网金融·供应链风控·ai决策
小邓睡不饱耶3 天前
基于Spark GraphX构建用户信任网络:精准定位高价值目标用户
大数据·spark·php