parquetwriter在java独立程序中输出空的parquet文件

4uqofj5v  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(366)

我试图将现有的avro文件转换为parquet。但是输出parquet文件为空。我不确定我做错了什么。。。
我的代码段:

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);
    }
xqk2d5yq

xqk2d5yq1#

我也遇到了同样的问题,发现在将数据提交到文件之前需要关闭parquetwriter。只需要你加上

parquetWriter.close();

在while循环之后。

相关问题