【问题标题】:avro 1.8.2 date type and writing as parquetavro 1.8.2 日期类型和拼花书写
【发布时间】:2019-06-02 07:49:31
【问题描述】:

我正在使用 avro 1.8.2 和一个简单的 avro idl 记录,就像这样

record FooRecord {
       string fooString;
       int fooInt;
       union {null, date} fooDate = null;
}

无法写入镶木地板。从我看到的一些解决方案中,他们建议迁移到 avro 1.9(但我可能不想这样做,因为我们当前的大多数技术堆栈都使用 1.8.2)。

有什么方法可以使这个工作与 avro-1.8.2 一起工作吗?

java.lang.ClassCastException: org.joda.time.LocalDate cannot be cast to java.lang.Number
    at org.apache.parquet.avro.AvroWriteSupport.writeValueWithoutConversion(AvroWriteSupport.java:323)
    at org.apache.parquet.avro.AvroWriteSupport.writeValue(AvroWriteSupport.java:275)
    at org.apache.parquet.avro.AvroWriteSupport.writeRecordFields(AvroWriteSupport.java:191)
    at org.apache.parquet.avro.AvroWriteSupport.write(AvroWriteSupport.java:165)
    at org.apache.parquet.hadoop.InternalParquetRecordWriter.write(InternalParquetRecordWriter.java:128)
    at org.apache.parquet.hadoop.ParquetWriter.write(ParquetWriter.java:299)

【问题讨论】:

  • 您为此使用了哪些工具/命令?
  • 简单的java代码

标签: avro parquet


【解决方案1】:

需要添加逻辑数据类型时间支持

    GenericData timeSupport = new GenericData();
    // need to add logicalTime Support
    timeSupport.addLogicalTypeConversion(new TimeConversions.DateConversion());
    timeSupport.addLogicalTypeConversion(new TimeConversions.TimeConversion());
    timeSupport.addLogicalTypeConversion(new TimeConversions.TimestampConversion());
    ParquetWriter<GenericRecord> avroParquetWriter = AvroParquetWriter.<GenericRecord> builder(parquetPath)
                                                                      .withSchema(avro.getSchema())
                                                                      .withDataModel(timeSupport)
                                                                      .withCompressionCodec(CompressionCodecName.SNAPPY)
                                                                      .build();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多