部分-r-00000中的重复值



当我正在处理一个xml文件(https://github.com/studhadoop/xml/blob/master/rpt)时,我得到重复的值作为输出。

bin/hadoop fs -text /user/root/t-output1/part-r-00000
ST17925 1.02
ST17925 1.02
ST17926 3.00
ST17926 3.00
ST17927 3.00
ST17927 3.00

my mapred https://github.com/studhadoop/xml/blob/master/XmlParser11.java

为什么会这样?是否取决于xml文件的大小?当我有一个大的xml文件,我得到重复的值。但是如果它是一个小的XML文件,输出就可以了。更新1

还有一个疑问。而不是像这样列出

studentid grade
ST17925 1.02
ST17926 3.00
ST17927 3.00

我应该在我的程序中做什么改变?

更新2 我将如何使我的输出在csv格式?

因为在您的reducer实现中,您将每个值的键写入输出收集器:

   for (Text value : values) {
      context.write(key, value);
    }

你可能想要的是:

 StringBuilder sb = new StringBuilder();
 for (Text value : values) {
    sb.append(value.toString());
    sb.append(" ");
 }
 context.write(key, new Text(sb.toString());

生成每个键的每个值的空格分隔列表。

相关内容

  • 没有找到相关文章