Как определить схему Avro в Java, как мне обрабатывать метки времени или даты? - PullRequest
0 голосов
/ 04 января 2019

У меня есть конвейер лучей, который принимает данные json, анализирует их, а затем записывает их в виде файлов паркета в корзину GCS.Я не знаю, как обрабатывать даты и временные метки при определении схемы Avro в Java.Это не дает возможность для дат или аналогичных.Только примитивы.Сейчас все работает, но моя дата остается в виде строки.Есть ли у кого-нибудь предложения по определению дат / временных отметок в объекте схемы 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 голосов
/ 04 января 2019

Здесь нет однозначного ответа.Это зависит от специфики вашего варианта использования.

Во-первых, вы получаете их в виде строк, поэтому, как упомянул @BSeitkazin, вполне разумно хранить их в строках, пока они вам действительно не понадобятся в качестве даты / времени..

Или вы можете хранить миллис , или любым другим удобным для вас способом.

И, глядя на Avro, даты, похоже, поддерживаются , начиная с 1.8.0 (текущий SDK Beam зависит от 1.8.2 ).

...