【发布时间】:2020-11-26 12:06:33
【问题描述】:
我有一个带日期的简单 POJO,在导入到 Google BigQuery 之前,它将作为 Avro 存储在存储中。日期转换为长日期,我正在尝试使用 @AvroSchema 覆盖日期字段的架构生成,以便 BigQuery 了解这些字段的类型。
简单的 POJO:
public class SomeAvroMessage implements Serializable {
@AvroSchema("{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}")
private long tm;
@AvroSchema("{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}")
private long created;
public SomeAvroMessage() {
}
}
最终得到以下 AVRO 模式:
{"type":"record","name":"SomeAvroMessage",
"namespace":"some.namespace",
"fields":[
{"name":"tm","type":{"type":"long","logicalType":"timestamp-millis"}},
{"name":"created","type":{"type":"long","logicalType":"timestamp-millis"}}
]}
这些似乎是错误的,应该只是 {"name":"tm","type":"long","logicalType":"timestamp-millis"}
这用于 Google Dataflow,Apache Beam 2.22 是用 Java 编写的。
我错过了什么吗?
【问题讨论】:
-
是什么让你觉得它错了?架构是有效的架构
-
是的,根据我的回答,这是一个有效的架构。但它是否会以某种方式造成问题?
标签: google-cloud-dataflow apache-beam avro