为什么在拆分字符串并将其连接在一起后,我的reducer函数会得到不同的输出?

时间:2017-03-23 21:05:36

标签: java hadoop split reducers

我明白这是一个奇怪的问题。让我举例说明。我正在编写一个reducer函数,它基本上连接了它收到的VM_COUNTERS_EX2的值。迭代器中的字符串格式为"%s,%s,%s"。当我像这样编写代码时:

PrivateWorkingSetSize

我得到的输出似乎是正确的。它的形式为"%s,%s,%s%s,%s,%s ......"

但是,当我像这样编写代码时:

Iterator

我得到一个完全不同的,奇怪的输出。首先,输出 not 包含应该连接的所有值。其次,它的形式对我来说毫无意义。它看起来像"%s,%s,%s%s"。显然,那里有一些缺失的信息。

关于可能导致这种情况的任何想法?我完全难过了。

编辑:我被问到原始数据,现在是。我还将在下面提供映射器功能。

映射器功能:

public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {
        StringBuilder indexValue = new StringBuilder();
        while (values.hasNext()) {
            String data = values.next().toString();
            indexValue.append(data);
        }

        output.collect(key, new Text(indexValue.toString()));
}

数据样本:

public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {
        StringBuilder indexValue = new StringBuilder();
        while (values.hasNext()) {
            String data = values.next().toString();
            String [] parts = data.split(",");
            indexValue.append(parts[0] + "," + parts[1] + "," + parts[2]);
        }

        output.collect(key, new Text(indexValue.toString()));
}

0 个答案:

没有答案