使用Spark计算WordCount

使用Spark统计单词计数,即Word Count的思路如下:

  1. 首先按行拆分单词,每个单词的初始计数为1
  2. 然后对相同的单词进行合并,并计数累加
  3. 对结果格式化输出

主要使用map,flatmap,reduceByKey算子进行计算统计,代码如下:

scala 复制代码
object WordCount {
    // 单词分隔符
    val delimiter = ","

    def main(args: Array[String]): Unit = {
        // 据说Spark-3.x可使用SPARK_USER环境变量指定用户名
        System.setProperty("user.name", "hdfs")

        // yarn-cluster模式时,只能通过spark-submit.sh方式提交
        val sparkConf = new SparkConf().setAppName("xuxm-test").setMaster("yarn-cluster")
        val sc = SparkContext.getOrCreate(sparkConf)

        // 计算WordCount,可用spark.sparkContext代替sc
        val file = sc.textFile("/Users/Xxx/input/wc_in.txt")
        val words = file.flatMap(line => line.split(delimiter))
        val pairs = words.map(word => (word, 1))
        // 自动按pairs中每个元祖的第一个元素作为key,第二个元素作为value,a和b参数分别表示要合并的相同key的2个元祖的value
        val counts = pairs.reduceByKey((a, b) => a + b)
        val wc = counts.map(p => p._1 + ":" + p._2)
        // 以上计算过程也可简化为如下形式
        // val wc = file.flatMap(_.split(delimiter)).map((_, 1)).reduceByKey(_ + _).map(p => p._1 + ":" + p._2)
        wc.collect().foreach(println) // collect结果是一个Array,也可直接foreach打印
        // 也可结果保存到文件中
        // wc.saveAsTextFile("/Users/Xxx/output/wc_out")
        sc.stop()
    }
}
相关推荐
阿里云大数据AI技术17 小时前
从原始Ego视频到训练就绪:用 EMR Serverless Spark 上的 Ray 提效具身数据生产管线
人工智能·spark
池佳齐1 天前
【软考高级架构师案例】流计算 vs 批处理,Spark 和 Flink 该怎么选?
大数据·flink·spark
chunyublog2 天前
Spark 词频统计练习
大数据·分布式·spark
Q26433650232 天前
【有源码】基于K-Means算法的航空客户行为分群及异常预订识别研究-基于大数据的航空客户预订行为多维分析与可视化大屏设计
大数据·人工智能·机器学习·数据挖掘·数据分析·spark·kmeans
Nefu_lyh2 天前
【工作杂谈_20261012】数据平台与工程治理: Spark OOM 排查:Java Heap、Executor 与代码内存模型
java·大数据·spark
计算机编程指导师2 天前
计算机毕设选题:基于Spark+Django的水质多指标关联分析与可视化系统源码 毕业设计 选题推荐 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·水质
计算机编程指导师2 天前
【大数据毕设】Hadoop+Spark台北市住宅价格数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·住宅价格
计算机编程指导师3 天前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
计算机编程指导师3 天前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变
计算机编程指导师3 天前
【计算机毕设选题推荐】基于Hadoop+Spark的化妆品销售大数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·化妆品