当前位置:   article > 正文

基于spark程序完成大学生学院人数工资统计_spark 大学

spark 大学

a基于reducebykey算子实现统计专业工资最大值


代码及运行部分

代码如下:
  1. public class a {
  2. public static void main(String[] args) {
  3. SparkConf sparkConf = new SparkConf().setAppName("GroupByKeyTest1").setMaster("local");
  4. JavaSparkContext sc = new JavaSparkContext(sparkConf);
  5. JavaRDD<String> rdd1 = sc.textFile("G:\\SPARK\\spark学习文件\\qmxm\\dxssj.jsonl");
  6. JavaPairRDD<String, sj> kvRdd = rdd1.mapToPair(new PairFunction<String, String, sj>() {
  7. @Override
  8. public Tuple2<String, sj> call(String s) throws Exception {
  9. Gson gson = new Gson();
  10. sj sj = gson.fromJson(s,sj.class);
  11. return new Tuple2<>(sj.getMajor(),sj);
  12. }
  13. });
  14. JavaPairRDD<String,sj>resRdd = kvRdd.reduceByKey(new Function2<sj, sj, sj>() {
  15. @Override
  16. public sj call(sj a, sj b) throws Exception {
  17. return a.getEmployed().intValue() >= b.getEmployed().intValue() ? a : b;
  18. }
  19. });
  20. List<Tuple2<String,sj>> list = resRdd.collect(); //.take(10) collect()
  21. for (Tuple2<String,sj> t : list){
  22. System.out.printf("%s专业的工资最高为:%d%n",t._1,t._2.getEmployed());
  23. }
  24. sc.stop();
  25. }
  26. }
运行结果为:

代码介绍

思路:
  1. 读文件得到普通RDD,此时RDD的元素的数据类型是String(目的是先得到原始的RDD
  2. 将RDD的String转成CanData类型的对象
  3. 将CanData类型的普通RDD转成键值对RDD
  4. 对键值对RDD进行分组
  5. 使用map算子对分组后的键值对RDD的元素进行转换,然后遍历每一组的值,计算最大工资
代码详解:

1.任何Spark程序都是SparkContext开始的,SparkContext的初始化需要一个SparkConf对象,SparkConf包含了Spark集群配置的各种参数。

初始化后,就可以使用SparkContext对象所包含的各种方法来创建和操作RDD和共享变量

2.集群URL:告诉Spark如何连接到集群上。例子中使用local可以让Spark运行在单机单线程上而无需连接到集群。
应用名:例子中使用GroupByKeyTest1。当连接到一个集群时,这个值可以帮助我们在集群管理器的用户界面中找到应用。

3.用sparkContext.textFile(...)创建RDD,后面的路径可以填写文件路径(spark集群上的和本地路径都可以,例子中演示的就是本地文件路径)

4.将普通RDD转成键值对:Major为专业,值为sj对象,代码:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/745142
推荐阅读
相关标签
  

闽ICP备14008679号