Hadoop中 key键的排序比较器类
来源:互联网 发布:mac虚拟机使用经验 编辑:程序博客网 时间:2024/06/05 17:35
排序是MapReduce的核心技术,尽管应用程序本身不需要对数据排序,但可以使用MapReduce的排序功能来组织数据。默认情况下,MapReduce根据输入记录的键对数据排序。键的排列顺序是由RawComparator控制的,规则如下:
1)若属性mapred.output.key.comparator.class已设置,则使用该类的实例;
2)否则键必须是WritableComparable的子类,并使用针对该键类的已登记的comparator;
3)如果还没有已登记的comparator,则使用RawComparator将字节流反序列化为一个对象,再由WritableComparable的compareTo()方法进行操作。
JobConf中有两个方法,setOutputKeyComparatorClass和getOutputKeyComparator。前者通过设置mapred.output.key.comparator.class属性,设置比较器类。后者在需要比较的时候,得到比较器类。
getOutputKeyComparator方法如下
public RawComparator getOutputKeyComparator() {
Class<? extends RawComparator> theClass = getClass("mapred.output.key.comparator.class",
null, RawComparator.class);
if (theClass != null)
//1,若属性mapred.output.key.comparator.class已设置,则使用该类的实例;
return ReflectionUtils.newInstance(theClass, this);
//如果没有设置mapred.output.key.comparator.class属性,则调用WritableComparator类的get方法
return WritableComparator.get(getMapOutputKeyClass().asSubclass(WritableComparable.class));
}
public static synchronized WritableComparator get(Class<? extends WritableComparable> c) {
WritableComparator comparator = comparators.get(c);
if (comparator == null)
//3,如果还没有已登记的comparator,则使用RawComparator将字节流反序列化为一个对象,再由WritableComparable的compareTo()方法进行操作。
comparator = new WritableComparator(c, true);
//2,否则键必须是WritableComparable的子类,并使用针对该键类的已登记的comparator;
return comparator;
}
- Hadoop中 key键的排序比较器类
- hadoop 的排序:key排序和分组排序
- hadoop 自定义分组排序,求相同key中value最小值
- TreeMap中如何实现自定义类key值的排序
- Java Map集合利用比较器Comparator根据Key和Value的排序
- Java Map集合利用比较器Comparator根据Key和Value的排序
- Map中字符串key的排序
- 使用比较器对Treemap按照key进行排序
- 关于hadoop的mapreduce编程中自定义key,value建立的类实现writable接口
- Hadoop Hive 中几种排序方法的区别与比较
- Unique Key 与 Primary Key 的比较
- Unique Key 与 Primary Key 的比较
- sorted()排序的key
- C++的map中key的排序方式
- HashMap中按key排序
- iOS 字典中遍历出的key 如何进行排序
- iOS中对字典的key进行排序
- mapreduce 二次排序后reduce输出中key的变化
- sbrk/brk的用法
- 面向对象设计之接口分离原则
- mfc 在ListCtrl控件的非第一列添加图标
- 设定类型通配符的上限
- svn无法更新(提交)报错 javahl.ClientException: Working copy not locked;提交报错-RA layer request failed的解决方法
- Hadoop中 key键的排序比较器类
- html
- iPhone 视图几何元素
- Hive 元数据解析
- servlet
- UIView与CALayer的区别
- Hibernate中save方法无报错无法保存及@Transactional注解的意义
- 数字地和模拟地处理的连接和处理
- mybatis(上篇)