Nano Hash - криптовалюты, майнинг, программирование

Определение схемы Avro в Java, как обрабатывать временные метки или значения даты?

У меня есть конвейер луча, который принимает данные 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";
04.01.2019

  • можно хранить метку даты и времени в строке, затем вы можете анализировать ее в зависимости от своих мыслей. 04.01.2019

Ответы:


1

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

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

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

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

04.01.2019
  • Я могу сохранить его как строку, которая является моим текущим состоянием, и это работает, но было бы идеально сохранить его как дату, чтобы я мог скопировать паркет в столбец даты Redshift, а не копировать в столбец строки и пригласить на свидание. Я не вижу способа определить дату специально с помощью объекта SchemaBuilder в Java. Похоже, что другие преобразовали дату в длинную, затем сохранили длинную в схеме, а затем преобразовали обратно в дату. Это работает, но по сути то же самое, что и сохранение в виде строки с последующим преобразованием в Redshift. Мысли? 04.01.2019
  • Пробовали ли вы использовать типы даты/времени Avro 1.8.0+? 04.01.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..