spark学习进度10(阶段练习)

阶段练习

一、看看数据集格式

二、明确需求

三、明确步骤

  1、读取文件

  2、抽取需要的列

  3、以年月为基础,进行reduceByKey统计东四地区的PM

  4、排序

  5、获取结果

四、编码

  1、拷贝数据集

  2、创建类

  3、编写代码

  4、运行测试

 @Test
  def reduce():Unit={
    //创建sc对象
    val conf=new SparkConf().setMaster("local[6]").setAppName("stage_practice")
    val sc=new SparkContext(conf)
    //读取文件
    val source=sc.textFile("dataset/BeijingPM20100101_20151231_noheader.csv")
    //通过算子处理数据
    //1、抽取数据,年、月、PM(年月放一起)((年,月),Pm)
    source.map(item=>((item.split(",")(1),item.split(",")(2)),item.split(",")(6)))
    //2、清洗,过滤掉空的和NA
      .filter(item=>StringUtils.isNoneEmpty(item._2) && !item._2.equalsIgnoreCase("NA"))
    //3、聚合
      .map(item=>(item._1,item._2.toInt))
      .reduceByKey((curr,agg)=>curr+agg)
    //4、排序
      .sortBy(item=>item._2,ascending = false)//为false之后就是降序显示了
    //获取结果
      .take(10)
      .foreach(item=>println(item))
    //关闭测试
    sc.stop()
  }

 总结:

原文地址:https://www.cnblogs.com/dazhi151/p/14257504.html