gpt4 book ai didi

parquet - 如何使用 parquet-avro 在 parquet 文件中创建日期类型列

转载 作者:行者123 更新时间:2023-11-30 23:49:36 25 4
gpt4 key购买 nike

我正在使用基于 Java(1.8) 的应用程序使用库创建 Parquet 文件
org.apache.avro.Schema 和 org.apache.parquet.hadoop.ParquetWriter 等。

这是我的示例代码

final String schemaLocation=ParquerWriterImpl.class.getClassLoader().getResource("parquet-schema/"+ ParquetTypes.RISKINFO.getFileType()).getPath();

        Schema avroSchema = new Schema.Parser().parse(new File(schemaLocation));

final MessageType parquetSchema = new AvroSchemaConverter().convert(avroSchema);
final WriteSupport<Mapper> writeSupport = new AvroWriteSupport(parquetSchema, avroSchema);
final String parquetPath = PropertyLoader.getPropertyLoader().getProperty(Constants.PROPERTY_MACHINE_FOLDERPATH) + "/" +
parquetFileName;
final Path path = new Path(parquetPath);
ParquetWriter<GenericRecord> parquetWriter = new ParquetWriter(path, writeSupport, CompressionCodecName.SNAPPY, BLOCK_SIZE, 1024);
final GenericRecord record = new GenericData.Record(avroSchema);
parquetWriter.write(function.apply(new RiskInfoGen(record)));
parquetWriter.close();

要创建此文件,我正在使用如下所示的 Avro 架构。
},
{
"name": "additional",
"type": {"type": "map", "values": "string","default" : null}

},

{
"name": "mydate",
"type": {"type": "int", "logicalType" : "date"}

}

在 POJO 类中,我将“mydate”映射到 Java int 类型。

问题 1
虽然我在这里得到了 Parquet 文件,但在用 spark 打开该文件后,“mydate”列显示为 int 类型而不是预期的日期类型。

请让我知道如何将此“mydate”作为 Parquet 模式中的日期列。

例如 mydate 日期(可为空的真)

最佳答案

我有同样的问题。我正在使用 Parquet-Avro 1.8.1

切换到 1.9.0为我修好了:

{"name": "birth_date", "type": [{"type": "int", "logicalType" : "date"}, "null"]}"

我将值设置为:
record.put("birth_date", 1);

它显示为 1970-01-02 在 apache spark 数据框中。

关于parquet - 如何使用 parquet-avro 在 parquet 文件中创建日期类型列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46364043/

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