SparkCore阶段练习

本文介绍了如何使用Spark进行北京PM2.5数据的处理,包括读取CSV文件、数据清洗、类型转换、reduceByKey聚合、降序排序,并展示了获取Dongsi地区前10个最大PM值的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阶段练习

  1. 查看数据集格式

  2. 明确需求

  3. 明确步骤

    1. 读取文件

    2. 抽取需要的列

    3. 以年月为基础,进行 reduceByKey 统计Dongsi地区的PM

    4. 排序

    5. 获取结果

  4. 编码

    1. 拷贝数据集

      data.rar(已上传资源——SparkCore阶段练习数据集

    2. 创建类

    3. 编写代码

    4. 运行测试

      @Test
      def pmProcess(): Unit = {
        // 1. 创建sc对象
        val conf = new SparkConf().setMaster("local[6]").setAppName("stage_practice")
        val sc = new SparkContext(conf)
        // 2. 读取文件
        val source = sc.textFile("./dataset/BeijingPM20100101_20151231_noheader.csv")
        // 3. 通过算子处理数据
        //    3.1 map切数据 ((年,月),pm)
        source.map(item => ((item.split(",")(1), item.split(",")(2)), item.split(",")(6)))
        //    3.2 filter 过滤空 和 NA 数据
          .filter(item => StringUtils.isNotEmpty(item._2) && !item._2.equalsIgnoreCase("NA")) // equalsIgnoreCase 判断两个字符串是否相等,忽略字符串的大小写,
        //    3.3 toInt 数据类型转换
          .map(item => (item._1, item._2.toInt))
        //    3.4 聚合数据
          .reduceByKey((curr, agg) => curr + agg)
        //    3.5 排序
          .sortBy(item => item._2, ascending = false) // 降序
        // 4.获取结果
          .take(10)
          .foreach(item => println(item))
        // 5. 关闭sc
        sc.stop()
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值