本文介绍了Avro Java API时间戳逻辑类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用Avro Java API,我可以创建一个简单的记录模式,如:
With the Avro Java API, I can make a simple record schema like:
Schema schemaWithTimestamp = SchemaBuilder
.record("MyRecord").namespace("org.demo")
.fields()
.name("timestamp").type().longType().noDefault()
.endRecord();
如何使用逻辑类型标记架构字段,具体为:
How do I tag a schema field with a logical type, specifically:https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/LogicalTypes.TimestampMillis.html
推荐答案
感谢DontPanic:
Thanks to DontPanic:
Schema timestampMilliType = LogicalTypes.timestampMillis().addToSchema(Schema.create(Schema.Type.LONG));
Schema schemaWithTimestamp = SchemaBuilder
.record("MyRecord").namespace("org.demo")
.fields()
.name("timestamp_with_logical_type").type(timestampMilliType).noDefault()
.name("timestamp_no_logical_type").type().longType().noDefault()
.endRecord();
System.out.println(schemaWithTimestamp.toString(true));
这导致:
{
"type" : "record",
"name" : "MyRecord",
"namespace" : "org.demo",
"fields" : [ {
"name" : "timestamp_with_logical_type",
"type" : {
"type" : "long",
"logicalType" : "timestamp-millis"
}
}, {
"name" : "timestamp_no_logical_type",
"type" : "long"
} ]
}
这篇关于Avro Java API时间戳逻辑类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!