小智 17
要将JSON数据文件转换为Parquet,您需要一些内存中表示.Parquet没有自己的Java对象集; 相反,它重用其他格式的对象,如Avro和Thrift.我们的想法是Parquet本身可以使用您的应用程序可能已经使用过的对象.
要转换JSON,您需要将记录转换为Avro 内存中对象并将其传递给Parquet,但您不需要将文件转换为Avro,然后转换为Parquet.
转换到Avro的目标已经完成了你,看风筝的JsonUtil,并准备为使用文件阅读器.转换方法需要Avro架构,但您可以使用相同的库从JSON数据推断Avro架构.
要编写这些记录,您只需要使用ParquetAvroWriter.整个设置如下所示:
Schema jsonSchema = JsonUtil.inferSchema(fs.open(source), "RecordName", 20);
try (JSONFileReader<Record> reader = new JSONFileReader<>(
fs.open(source), jsonSchema, Record.class)) {
reader.initialize();
try (ParquetWriter<Record> writer = AvroParquetWriter
.<Record>builder(outputPath)
.withConf(new Configuration)
.withCompressionCodec(CompressionCodecName.SNAPPY)
.withSchema(jsonSchema)
.build()) {
for (Record record : reader) {
writer.write(record);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14623 次 |
| 最近记录: |