在Driver类中读取一个镶木地板文件

时间:2015-04-15 07:19:46

标签: mapreduce parquet

我有一个镶木地板输入文件。我想在我的驱动程序类中读取该输入文件,并进行一些处理以设置我的作业配置。

请给我一些关于此的意见。

1 个答案:

答案 0 :(得分:2)

我使用以下方法读取驱动程序类中的Parquet文件。

 ParquetMetadata readFooter = ParquetFileReader.readFooter(configuration, parquetFilePath);
MessageType schema = readFooter.getFileMetaData().getSchema();
ParquetFileReader parquetFileReader = new ParquetFileReader(
    configuration, parquetFilePath, readFooter.getBlocks(), schema.getColumns());
BufferedWriter w = new BufferedWriter(new FileWriter(csvOutputFile));
PageReadStore pages = null;
try {
  while (null != (pages = parquetFileReader.readNextRowGroup())) {
    final long rows = pages.getRowCount();
    LOG.info("Number of rows: " + rows);

    final MessageColumnIO columnIO = new ColumnIOFactory().getColumnIO(schema);
    final RecordReader<Group> recordReader = columnIO.getRecordReader(pages, new GroupRecordConverter(schema));
    for (int i = 0; i < rows; i++) {
      final Group g = recordReader.read();
    }
  }
}