Hadoop分区器的前两个关键字



当我执行Hadoop流时。这是mapper (Key, Value)的输出关键字是一个用空格分隔的字序列。

我想使用分区器返回前两个单词的哈希值。

因此,实现为

public static class CounterPartitioner extends Partitioner<Text, IntWritable> {
    @Override
    public int getPartition(Text key, IntWritable value, int numPartitions) {
        String[] line = key.toString().split(" ");
        String prefix = (line.length > 1) ? (line[0] + line[1]) : line[0];
        return (prefix.hashCode() & Integer.MAX_VALUE) % numPartitions;
    }
}
我的问题是有没有办法使用内置的Hadoop库并修改配置,如
mapred.output.key.comparator.class
stream.map.output.field.separator
stream.num.map.output.key.fields
map.output.key.field.separator
mapred.text.key.comparator.options
...

当我执行Hadoop流时。这是mapper (Key, Value)的输出,键是一个用空格分隔的字序列。

我的问题是是否有一种方法通过使用内置的Hadoop库和修改配置,如

mapred.output.key.comparator.classstream.map.output.field.separator

内置的Hadoop库是基于Java的,流的目的是使用Java之外的其他语言来与STDIO/STDOUT对话。

我不明白使用Java构建的Hadoop API更改流相关属性的目的。

BYW,除了在配置文件和命令提示符中设置配置属性外,还可以使用Configuration#set来设置配置属性。

相关内容

  • 没有找到相关文章

最新更新