在Java中定义Avro模式时,如何处理时间戳或日期值?

时间:2019-01-04 04:30:59

标签: java avro apache-beam

我有一个接收json数据的光束管道,对其进行解析,然后将其作为实木复合地板文件写入GCS存储桶。在Java中定义Avro模式时,我不知道如何处理日期和时间戳。它不提供日期或类似选项。仅原始体。现在一切正常,但我的约会日期保持不变。有人对在Avro模式对象以及Java对象中将日期/时间戳定义为日期传递任何建议吗?

static final Schema SCHEMA = SchemaBuilder.record("Record")
.namespace("com.foo").fields().requiredString("val1")
.requiredString("val2").requiredString("timestamp").endRecord();

示例时间戳:

String timestamp = "2018-12-06T21:22:35.700Z";

1 个答案:

答案 0 :(得分:0)

这里没有一个答案。这取决于您的用例的具体情况。

首先,您将它们作为字符串接收,因此@BSeitkazin提到,将它们保留在字符串中,直到您真正需要它们作为日期/时间戳,这是完全合理的。

或者您可以存储millis或任何其他方便的方式。

看着Avro,日期似乎是supported there since 1.8.0(当前的Beam SDK depends on 1.8.2)。