gpt4 book ai didi

java - 使用Java将Json对象转换为Parquet格式,无需转换为AVRO(不使用Spark、Hive、Pig、Impala)

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:55 26 4
gpt4 key购买 nike

我有一个场景,使用 Java 将作为 Json 对象呈现的消息转换为 Apache Parquet 格式。任何示例代码或示例都会有所帮助。据我发现,将消息转换为 Parquet 的方法是使用 Hive、Pig、Spark。我需要转换为 Parquet,而不需要仅通过 Java 来涉及这些。

最佳答案

要将 JSON 数据文件转换为 Parquet,您需要一些内存中表示。 Parquet 没有自己的 Java 对象集;相反,它重用其他格式的对象,例如 Avro 和 Thrift。这个想法是 Parquet 可以与您的应用程序可能已经使用的对象一起本地工作。

要转换 JSON,您需要将记录转换为 Avro 内存中对象,并将它们传递给 Parquet,但不需要将文件转换为 Avro,然后再转换为 Parquet。

已为您完成到 Avro 对象的转换,请参阅 Kite's JsonUtil ,并且可以用作 file reader 。转换方法需要 Avro 架构,但您可以使用相同的库 infer an Avro schema from JSON data .

要写入这些记录,您只需使用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);
}
}
}

关于java - 使用Java将Json对象转换为Parquet格式,无需转换为AVRO(不使用Spark、Hive、Pig、Impala),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42269530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com