2016-06-20 27 views
1

我试图将现有的avro文件转换为实木复合地板。但输出地板文件是空的。我不知道我做错了什么......ParquetWriter在java独立程序中输出空的地板文件

我的代码片段:

FileReader<GenericRecord> fileReader = DataFileReader.openReader(
      new File("output/users.avro"), new GenericDatumReader<GenericRecord>()); 

    Schema avroSchema = fileReader.getSchema(); 

    // generate the corresponding Parquet schema 
    MessageType parquetSchema = new AvroSchemaConverter().convert(avroSchema); 

    // choose compression scheme 
    CompressionCodecName compressionCodecName = CompressionCodecName.UNCOMPRESSED; 

    // set Parquet file block size and page size values 
    int pageSize = 64 * 1024; 

    Path outputPath = new Path("output/users.parquet"); 

    // create a parquet writer using builder 
    ParquetWriter parquetWriter = (ParquetWriter) AvroParquetWriter.builder(outputPath) 
      .withSchema(avroSchema) 
      .withCompressionCodec(compressionCodecName) 
      .withPageSize(pageSize) 
      .build(); 

    // read avro, write parquet 
    while (fileReader.hasNext()) { 
     GenericRecord record = fileReader.next(); 

     System.out.println(record); 

     parquetWriter.write(record); 
    } 

回答

2

我有同样的问题,我发现我需要关闭parquetWriter在数据被提交到文件中。它只是需要你添加

parquetWriter.close(); 

while循环后。