欢迎来到天天文库
浏览记录
ID:36331275
大小:1.73 MB
页数:12页
时间:2019-05-09
《hadoop开发实战培训36-mapreduce高阶实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Hadoop大数据解决方案进阶应用Hadoop讲师:迪伦(北风网版权所有)MapReduce高阶实现(10)Terasort算法分析二次排序课程目标maptask对数据记录做标记每个maptask从文件_partition.lst读取分割点,并创建trie树(假设是2-trie,即组织利用前两个字节)Maptask从split中一条一条读取数据,并通过trie树查找每条记录所对应的reducetask编号二次排序(辅助排序)MapReduce在记录到达reducer之前按key排好序,但key所对应的value并没
2、有被排序由于值来自不同的map任务,多次运行程序时,值出现的顺序并不固定二次排序是通过对键进行排序和分组以实现对值的排序二次排序就是首先按照第一字段排序,然后再对第一字段相同的行按照第二字段排序实例:设计一个MapReduce程序以计算每年最高气温思路:实现全部记录按照年升序排列,按照气温降序排列,则只需获取各年份的首条记录即可实例:二次排序处理过程构建一个同时包含年份和气温信息的组合键,期望所有记录先按年份升序排列,再按气温降序排列设定一个按照键的年份进行分区的partitioner,以确保同一年的记录被发送到同
3、一个reducer中实例:二次排序进行分组设置。如果reducer中的值按照键的年份进行分组,则一个reducer组将包括同一年份的所有记录排序方法的总结定义包括自然键和自然值的组合键键的comparator根据组合键对记录进行排序,即同时利用自然键和自然值进行排序针对组合键的partitioner和分组comparator在进行分区和分组时均只考虑自然键二次排序相关的类setOutputKeyComparatorClass:参数为继承RawComparator的子类通常利用继承WritableComparator
4、来实现根据组合键进行排序setPartitionerClass:需要指定自定义分区的类根据组合键中的自然键进行分区setOutputValueGroupingComparator:指定用户自定义的comparator,用于将reduce的输入进行分组将自然键key相同的放到一起,相同key的value放到一个value迭代器里实例代码:二次排序实例代码:二次排序实例代码:二次排序实例:二次排序运行程序$hadoopjarjob.jarMaxTemperatureUsingSecondarySortinput/ncd
5、c/alloutput-secondarysort$hadoopfs-catoutput-secondarysort/part-*
6、sort
7、head欢迎访问我们的官方网站www.ibeifeng.com
此文档下载收益归作者所有