2016-06-20 26 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循環後。