gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:54:56 28 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/39858856/

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