shuffle中关键阶段sort的示例分析
发表于:2024-10-06 作者:千家信息网编辑
千家信息网最后更新 2024年10月06日,这篇文章主要介绍了shuffle中关键阶段sort的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。源码中有这样一段代码1. M
千家信息网最后更新 2024年10月06日shuffle中关键阶段sort的示例分析
这篇文章主要介绍了shuffle中关键阶段sort的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
源码中有这样一段代码
1. Map端排序获取的比较器
public RawComparator getOutputKeyComparator() { // 获取mapreduce.job.output.key.comparator.class,必须是RawComparator类型,如果没设置,是null Class extends RawComparator> theClass = getClass( JobContext.KEY_COMPARATOR, null, RawComparator.class); // 如果用户自定义了这个参数,那么实例化用户自定义的比较器 if (theClass != null) return ReflectionUtils.newInstance(theClass, this); // 默认情况,用户是没用自定义这个参数 // 判断Map输出的key,是否是WritableComparable的子类 // 如果是,调用当前类的内部的Comparator! return WritableComparator.get(getMapOutputKeyClass().asSubclass(WritableComparable.class), this); }
总结: 如何对感兴趣的数据进行排序?
① 数据必须作为key
② 排序是框架自动排序,我们提供基于key的比较器,也就是Comparator,必须是RawComparator类型
a) 自定义类,实现RawComparator,重写compare()
指定mapreduce.job.output.key.comparator.class为自定义的比较器类型
b)key实现WritableComparable(推荐)
③ 实质都是调用相关的comparaTo()方法,进行比较
2. Reduce端进行分组的比较器
RawComparator comparator = job.getOutputValueGroupingComparator();// 获取mapreduce.job.output.group.comparator.class,必须是RawComparator类型// 如果没用设置,直接获取MapTask排序使用的比较器// 也是比较keypublic RawComparator getOutputValueGroupingComparator() { Class extends RawComparator> theClass = getClass( JobContext.GROUP_COMPARATOR_CLASS, null, RawComparator.class); if (theClass == null) { return getOutputKeyComparator(); } // 如果设置了,就使用设置的比较器 return ReflectionUtils.newInstance(theClass, this); }
感谢你能够认真阅读完这篇文章,希望小编分享的"shuffle中关键阶段sort的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
比较器
排序
篇文章
类型
用户
示例
阶段
中关
分析
兴趣
参数
数据
也就是
代码
价值
同时
子类
实例
实质
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
祝亿迅云网络技术有限公司
vb怎么导入数据库
盘古网络技术有限公司张思昊
服务器藏宝小视频
微信小程序用哪个数据库最好
从大学生角度谈网络安全
怎么用wifi做我的世界服务器
网络安全教育知识的概念
哪里有学软件开发的学校
卫健委网络安全汇报
北京有竹网络技术有限公司
桓台hr人力资源软件开发咨询
民航网络技术方向
更新数据库标签
云算力软件开发
广电网络技术员的工作任务
云数据库不存在的优势
网络安全50题答案
家用机和服务器主板
美容院管理系统软件开发
导网页带链接的数据库
最新数据库的排行
如何给普通人讲清楚网络安全防护
软件开发技术的概念
北京软件开发App网站制作
怀旧服服务器来源名字
计算机3级网络技术填空题
java简单软件开发
做网络安全工作月薪大概多少
单位网络安全部门是哪个部门