当前位置: 首页 > news >正文

大数据Spark(六十七):Transformation转换算子distinct和mapValues

文章目录

Transformation转换算子distinct和mapValues

一、distinct

二、mapValues


Transformation转换算子distinct和mapValues

一、distinct

用于对RDD数据进行去重,返回一个新的RDD,返回RDD包含原始RDD中所有唯一元素。实际底层distinct的实现为map+reduceByKey+map实现。

Java代码:

SparkConf conf = new SparkConf().setMaster("local").setAppName("DistinctTest");
JavaSparkContext sc = new JavaSparkContext(conf);JavaRDD<String> rdd = sc.parallelize(Arrays.asList("a", "b", "c", "a", "b", "c"));//如果手动实现去重:mapToPair+reduceByKey+map
JavaPairRDD<String, Integer> rdd1 = rdd.mapToPair(new PairFunction<String, String, Integer>() {@Overridepublic Tuple2<String, Integer> call(String s) throws Exception {return new Tuple2<>(s, 1);}
});
JavaPairRDD<String, Integer> rdd2 = rdd1.reduceByKey(new Function2<Integer, Integer, Integer>() {@Overridepublic Integer call(Integer v1, Integer v2) throws Exception {return v1 + v2;}
});rdd2.map(new Function<Tuple2<String,Integer>, String>() {@Overridepublic String call(Tuple2<String, Integer> v1) throws Exception {return v1._1;}
}).foreach(s->System.out.println(s));//使用distinct算子去重,对源RDD去重后返回一个新的RDD
JavaRDD<String> distinct = rdd.distinct();
distinct.foreach(s->System.out.println(s));
sc.stop();

Scala代码:

val conf = new SparkConf().setMaster("local").setAppName("DistinctTest")
val sc = new SparkContext(conf)val rdd: RDD[String] = sc.parallelize(Array("a","b","c","a","b","c"))
//手动去重,map+reduceByKey+map
rdd.map((_,1)).reduceByKey(_+_).map(t=>t._1).foreach(println)//使用distinct去重
rdd.distinct().foreach(println)sc.stop()

二、mapValues

该函数对K,V格式RDD中的Value按照传入的函数做转换,返回是K,V格式的RDD,Value为新转换后的Value。

Java代码:

SparkConf conf = new SparkConf().setMaster("local").setAppName("MapValuesTest");
JavaSparkContext sc = new JavaSparkContext(conf);JavaPairRDD<String, Integer> pairRDD = sc.parallelizePairs(Arrays.asList(new Tuple2<String, Integer>("a", 1),new Tuple2<String, Integer>("b", 2),new Tuple2<String, Integer>("c", 3)
));//mapValues算子,只对value进行操作,key保持不变
JavaPairRDD<String, Integer> result = pairRDD.mapValues(new Function<Integer, Integer>() {@Overridepublic Integer call(Integer integer) throws Exception {return integer * 2;}
});result.foreach(tp->System.out.println(tp));sc.stop();

Scala代码:

val conf = new SparkConf().setMaster("local").setAppName("MapValuesTest")
val sc = new SparkContext(conf)val rdd: RDD[(String, Int)] = sc.parallelize(List(("a", 1), ("b", 2), ("c", 3)))
//mapValues:对rdd中value进行操作,key不变
rdd.mapValues(_ * 10).foreach(println)sc.stop()

此外,还有个flatMapValues算子,其与mapValues类似,只是mapValues一对一返回数据,而flatMapValues一对多返回数据。


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
http://www.dtcms.com/a/452893.html

相关文章:

  • 【寰宇光锥舟】
  • 计算机视觉(opencv)——嘴部表情检测
  • 唤醒手腕2025年最新机器学习K近邻算法详细教程
  • 广州化妆品网站建设公司排名北京网站建设91086
  • 【纯AI观点】用于协作内容创建和知识管理的MediaWiki
  • 贵州省网站建设网站打开时的客户引导页
  • C++新标准——decltype 关键字
  • Java中通过.xml文件管理测试用例类
  • 清空全网题目系列 · 洛谷 · P1054 [NOIP 2005 提高组] 等价表达式
  • 偏振光阴影投影的三元光学逻辑处理器
  • GitLab 安装指南
  • 磁共振成像原理(理论)20:K空间采样 (Sampling of k-Space) - 采样定理
  • 安装wslgui
  • 激光+摄像头:打造高精度视觉测量系统
  • ie的常用网站渭南市建设局网站
  • 前端混入与组合实战指南
  • C++ 学习(3) ----设计模式
  • 畜牧业网站模板怎么做自己的网站平台
  • DAY 43 复习日-2025.10.7
  • 大数据毕业设计选题推荐-基于大数据的人体生理指标管理数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • Auricore亮相杭州RWA峰会,以黄金RWA重塑Web3新生态
  • 于飞网站开发免费推广软件工具
  • ChainVault闪耀杭州RWA峰会,黄金RWA重塑Web3新生态
  • [论文阅读] AI+软件工程(迁移)| 从JDK8到21:FreshBrew如何为AI代码迁移画上“可信句号”
  • 电信大数据实战:MySQL与Hadoop高效同步
  • 郑州经济技术开发区协同办公系统seo比较好的公司
  • FFmpeg开发笔记(十二):ffmpeg音频处理、采集麦克风音频录音为WAV
  • 金融大模型应用现状及未来趋势研究:国内外对比分析
  • AI 在金融、医疗、教育、制造业等领域都有广泛且深入的应用,以下是这些领域的一些落地案例
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 变量(Variable)的定义与操作