hadoop如何在流模式下知道您的密钥类型

时间:2011-12-03 13:56:42

标签: hadoop mapreduce

在map之后和reduce之前,有一个排序阶段。在流媒体模式下,hadoop如何知道您的密钥类型是什么,并对其进行排序。

例如

输入文件格式

1990    1
1991    4
1992    5
...

地图的结果有密钥1990,1991,1992 ......,怎么用hadoop排序呢? (数字排序或按字母顺序排序)

1 个答案:

答案 0 :(得分:5)

在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属性设置为rawbytestypedbytes,否则地图输出键/值将在IdentifierResolver #resolution中设置为Text.class。

setOutputKeyClass(Text.class);
setOutputValueClass(Text.class);

在Text.java中,Comparator子类扩展了WritableComparator并实现了比较方法,它在字典顺序(字典或字母顺序)中进行比较。

检查StreamJobIdentifierResolverText类。