作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 map 之后和 reduce 之前,有一个排序阶段。在streaming模式下,hadoop怎么知道你输入的key是什么,然后排序。
例如
输入文件格式
1990 1
1991 4
1992 5
...
map的结果有keys 1990,1991,1992...,hadoop是怎么排序的? (数字排序或字母排序)
最佳答案
在 StreamJob 中,映射输出键/值对指定为
idResolver.resolve(jobConf_.get("stream.map.output",
IdentifierResolver.TEXT_ID));
jobConf_.setClass("stream.map.output.reader.class",
idResolver.getOutputReaderClass(), OutputReader.class);
jobConf_.setMapOutputKeyClass(idResolver.getOutputKeyClass());
jobConf_.setMapOutputValueClass(idResolver.getOutputValueClass());
除非 stream.map.output
属性设置为 rawbytes
或 typedbytes
,否则 map 输出键/值设置为文本。 IdentifierResolver#resolve 中的类。
setOutputKeyClass(Text.class);
setOutputValueClass(Text.class);
在 Text.java 中,Comparator 子类扩展了 WritableComparator 并实现了按 Lexicographic 顺序(字典或字母顺序)进行比较的比较方法。
检查 StreamJob , IdentifierResolver和 Text类。
关于hadoop - hadoop如何在流模式下知道你的 key 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8368131/
我是一名优秀的程序员,十分优秀!