Io Hadoop中的文本读取器类

Io Hadoop中的文本读取器类,io,hadoop,Io,Hadoop,我有一个目录输出,其中有来自Map Reduce作业的输出文件。输出文件是使用TextOutputFormat编写的文本文件 现在我想从输出文件中读取键值对。如何使用hadoop中的一些现有类来实现这一点。我可以这样做的一个方法是 FileSystem fs = FileSystem.get(conf); FileStatus[] files = fs.globStatus(new Path(OUTPUT + "/part-*")); for(FileStatus file:files){

我有一个目录输出,其中有来自Map Reduce作业的输出文件。输出文件是使用TextOutputFormat编写的文本文件

现在我想从输出文件中读取键值对。如何使用hadoop中的一些现有类来实现这一点。我可以这样做的一个方法是

FileSystem fs = FileSystem.get(conf);
FileStatus[] files = fs.globStatus(new Path(OUTPUT + "/part-*"));
for(FileStatus file:files){
  if(file.getLen() > 0){
    FSDataInputStream in = fs.open(file.getPath());
    BufferedReader bin = new BufferedReader(new InputStreamReader(
        in));
    String s = bin.readLine();
    while(s!=null){
      System.out.println(s);
      s = bin.readLine();
    }
    in.close();
  }
}

这种方法会起作用,但会大大增加我的任务,因为我现在需要手动解析每行中的键值对。我正在寻找一种更方便的方法,可以直接读取某些变量中的键和值。

在以前的工作中,您是否被迫使用
TextOutputFormat
作为您的输出格式

如果不考虑使用序列文件输出格式,那么可以使用StaseCeFel.Reader以键/值对读取文件。您还可以使用hadoop fs-text path/to/output/part-r-00000“查看”文件


编辑:您也可以使用
KeyValueLineRecordReader
类,只需将FileSplit传递给构造函数。

我使用TextOutputFormat,因为我需要输出文件为可读文件。我已经考虑过你的建议了,谢谢,那是我最后的选择。