Spark案例实操

短命女 2023-02-18 12:57 59阅读 0赞
  1. 数据结构:时间戳,省份,城市,用户,广告,中间字段使用空格分割。
    数据

    链接:https://pan.baidu.com/s/1N3aq3Psv2R9ZdPjHt6-m1Q
    提取码:52w9

样本如下:

  1. 1516609143867 6 7 64 16
  2. 1516609143869 9 4 75 18
  3. 1516609143869 1 7 87 12
  1. 需求:统计出每一个省份广告被点击次数的TOP3
  2. 实现代码:

    import org.apache.spark.{ SparkConf, SparkContext}

    //需求:统计出每一个省份广告被点击次数的TOP3
    object Practice {

    def main(args: Array[String]): Unit = {

    1. //1.初始化spark配置信息并建立与spark的连接
    2. val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Practice")
    3. val sc = new SparkContext(sparkConf)
    4. //2.读取数据生成RDD:TS,Province,City,User,AD
    5. val line = sc.textFile("f:\\in")
    6. //3.按照最小粒度聚合:((Province,AD),1)
    7. val provinceAdToOne = line.map { x =>
    8. val fields: Array[String] = x.split(" ")
    9. ((fields(1), fields(4)), 1)
    10. }
    11. //4.计算每个省中每个广告被点击的总数:((Province,AD),sum)
    12. val provinceAdToSum = provinceAdToOne.reduceByKey(_ + _)
    13. //5.将省份作为key,广告加点击数为value:(Province,(AD,sum))
    14. val provinceToAdSum = provinceAdToSum.map(x => (x._1._1, (x._1._2, x._2)))
    15. //6.将同一个省份的所有广告进行聚合(Province,List((AD1,sum1),(AD2,sum2)...))
    16. val provinceGroup = provinceToAdSum.groupByKey()
    17. //7.对同一个省份所有广告的集合进行排序并取前3条,排序规则为广告点击总数
    18. val provinceAdTop3 = provinceGroup.mapValues { x =>
    19. x.toList.sortWith((x, y) => x._2 > y._2).take(3)
    20. }
    21. //8.将数据拉取到Driver端并打印
    22. provinceAdTop3.collect().foreach(println)
    23. //9.关闭与spark的连接
    24. sc.stop()

    }

    }

发表评论

表情:
评论列表 (有 0 条评论,59人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spark 案例

    案例实操   Spark Shell 仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在 IDE 中编制程序,然后打成 jar 包,然后提交到集群,最常用...

    相关 azkaban --- 案例

    目录 案例一 : 输出Hello World 案例二 :作业依赖 案例三 :内嵌工作流 案例四 :自动失败 案例五 :手动失败 案例六 :JavaProcess

    相关 Spark案例

    1. 数据结构:时间戳,省份,城市,用户,广告,中间字段使用空格分割。 `数据` 链接:https://pan.baidu.com/s/1N3aq3Ps