我明白这是一个奇怪的问题。让我举例说明。我正在编写一个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()));
}