大数据有道之spark选择去重
消息来源:baojiabao.com 作者: 发布时间:2026-06-29

一.spark简介
spark是基于内存运算的大数据分散式并行计算框架,本身具有丰富的API,可实现与HDFS、HBase、Hive、Kafka、Elasticsearch、Druid等组件的交互,同时也是优秀的MapReduce替代方案。
spark卓越的计算性能得意于其核心的分散式数据架构:RDD和DataFrame。
1、RDD
RDD(Resilient Distributes Dataset), 是spark中最基础、最常用的数据结构。其本身封装了作业中input data数据,并以分区方式分布在内存或者磁盘上的Block中。但实质上RDD对象是一个元数据结构,存储著Block、Node映射关系等元数据信息。
RDD常规去重算子:
2、DataFrame
DataFrame是一种以RDD为基础的分散式数据集,具有schema元数据信息,即标注了DataFrame中每一列名称和类型,能够大幅提升Transform、Action的计算效率。
DataFrame常规去重算子:
3、RDD与DataFrame对比
二.选择去重
接下来,大数据有道将和大家一起学习一下spark RDD和DataFrame选择去重的技巧。
1、原始数据
江南皮革厂订单数据(input),需要指出“original_price”和real_pay对应double类型、“create_time”和“modify_time”为long类型。
源数据预处理:
为了方便对每条订单进行提取和计算,作业中封装了订单对象RiveSouthOrder:
2、RDD选择去重
a.选择去重代码(scala):
b.执行日志:
c.计算结果:
d.逻辑解析:
第一部分,载入源数据并封装到RiveSouthOrder样例类中,生成RDD;
第二部分,首先通过groupBy对order_id数据做分组后生成RDD[(String, Iterable[RiveSouthOrder])]对象([K,V]结构),随即使用map对每个Key(order_id)下多组记录(Iterable[RiveSouthOrder])进行reduce操作(maxBy),最后在maxBy算子传入一个字面量函数(也可写为x=>x.modify_time),即提取该order_id下每条记录中的modify_time进行比对,然后选出最新时间记录(maxBy为高阶函数,依赖reduceLeft实现);
第三部分,toDebugString方法打印RDD转换过程,最后值得注意collect才是真正触发一系列运算的源头。
3、DataFrame选择去重
a.选择去重代码(scala):
b.执行日志:
第一部分,引入依赖和隐式转换,分别对应DataFrame类型识别、使用sql格式的$"modify_time"和row_number+Window函数的使用;
第二部分,载入源数据,由于源数据由RiveSouthOrder封装,可直接toDF;
第三部分,首先使用withColumn方法添加Num字段,Num是由row_number+Window+orderBy实现(原理同Hive sql),原则是根据modify_time对每个order_id分区下的订单进行降序排序,接着使用where做过滤(也可使用filter),最后drop掉不再使用的Num字段;
第四部分,通过explain打印dataFrame的物理执行过程,show方法作为action算子触发了以上的系列运算。
三.归纳总结
spark RDD和DataFrame均提供了丰富的API界面,极大的提升了开发效率和计算性能;
RDD的计算更倾向于map和reduce方式,而DataFrame含有schema元信息更容易与sql计算方式相结合;
RDD选择去重使用了groupBy+maxBy方法,一气呵成;DataFrame则使用row_number+window+orderBy方法,逻辑清晰;两者处理方式所展现的spark函数式编程的精妙之处都值得探索和学习。
相关文章
B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09
科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯2023-02-17 18:46:15
华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比2023-02-17 18:42:49
小米MAX4手机上市日期首发价格 骁龙720打造大屏标准2023-02-17 18:37:22
武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱2023-02-16 15:53:18
谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠2023-02-16 13:34:45
巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注2023-02-13 16:49:06
人手不足 韵达快递客服回应大量包裹派送异常没有收到2023-02-07 15:25:20
资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东2023-02-02 09:24:38
三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办2023-01-24 10:10:02
华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone142023-01-06 20:27:09
芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?2022-12-02 17:25:17
华为暂缓招聘停止社招了吗?官方回应来了2022-11-19 11:53:50
热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全2022-11-16 16:59:09
东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?2022-10-22 15:21:55
苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次2022-10-03 22:13:45
苹果美版iPhone可以在中国保修 从哪看怎么查询iPhone的生产日期?2022-09-22 10:00:07










