Spark学习之路(五):使用Java和Scala编写按词频降序排序的WordCount程序

本文详细介绍了使用Java和Scala在Spark上实现按词频降序排序的WordCount程序,涵盖核心算子如flatMap、map、reduceByKey、sortByKey的运用,并提供了RDD血缘关系图,是理解Spark作业要素和内核工作原理的基础。
摘要由CSDN通过智能技术生成

一、按词频降序排序的WordCount思路分析

  • WordCount,也叫词频统计程序是大数据里面一个最简单的入门程序,但是“麻雀虽小,五脏俱全”,WordCount涵盖了大数据处理的核心思想,因而非常之重要。而加入了排序功能之后的WordCount就更加具有价值了。现在分析按词频降序排序的WordCount使用Spark核心算子如何实现:
  • 1.将源RDD使用flatMap算子进行一对多映射,将一行文本映射为多个单词输出输出为WordRDD;
  • 2.对WordRDD使用map算子将每一个单词进行一对一映射为(word,1),生成wordPairRDD;
  • 3.将worPairRDD使用reduceByKey算子,按照Kay进行聚合累加操作,生成count2WordRDD;
  • 4.对count2WordRDD使用map算子,将(word,count)形式的元组,映射为(count,word)形式的元组,生成count2WordRDD;
  • 5.对count2WordRDD使用sortByKey算子,按Key(词频)进行降序排序,生成count2WordSortedRDD。
  • 6.对count2WordSortedRDD使用map算子将(count,word)形式的元组还原为(word,count)的元组,生成word2CountSortedRDD;
  • 7.对word2CountSortedRDD使用collect算子,将统计结果收集到一个集合中。至此按词频降序排序的WordCount程序完成。
  • 以下是按词频降序排序的WordCount程序的RDD血缘关系图:
    在这里插入图片描述

二、使用Java编写程序

  • 本次演示使用的Spark版本是:spark-2.1.0-bin-hadoop2.7
  •     /**
       * Spark实现WordCount并按词频降序排序后输出的Java版本
       */
      public class WordCountByJava {
         
      
          public static void main(String[] args) {
         
              // 创建SparkConf
              SparkConf conf = new SparkConf()
                      .setAppName("AggregateByKeyJava")
                      // 使用本地模式
                      .setMaster("local")
                      .set("spark.testing.memory","2147480000");
              // 创建JavaSparkContext
              JavaSparkContext sc = new JavaSparkContext(conf);
              // 创建模拟数据
              List<String> lines = new ArrayList<String>();
              lines.add("你好 萧邦主 你好 spark");
              lines.add("hello 萧邦主 你好 spark");
              lines.add("hello 萧邦主 你好 hadoop");
              lines.add("hello 萧邦主 hello hadoop");
              lines.add("hello 萧邦主 hello hadoop")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值