Возможна ли гибкая схема в формате ORC или Parquet? - PullRequest
0 голосов
/ 17 мая 2018

Мое Java-приложение потребляет данные в реальном времени, а затем публикует их в файл ORC на S3

. Проблема в том, что, поскольку мы не знаем схему файла, пока не обработаем все записи, в отличие отпервая запись

Например:

  • Сообщение 1 имеет атрибуты A & B
  • Сообщение 2 имеет атрибуты A, B & C
  • Сообщение3 имеет атрибуты A & C

Поскольку это приложение реального времени, я не хочу обрабатывать все сообщения для разработки схемы, поскольку это будет довольно медленно

Можно ли добавить к схеме, как мы обрабатываем данные?

Я посмотрел примеры Java здесь , но я не вижу пути

Паркет будет здесь лучше?

1 Ответ

0 голосов
/ 11 сентября 2018

Я думаю, что вы, возможно, пытаетесь втиснуть круглый колышек в квадратное отверстие.Похоже, что вы глотаете поток событий с неизвестной схемой, и вы хотели бы сохранить его в формате, который оптимизирует для известной схемы.

Я полагаю, вы можете буферизовать определенное количество событий (скажем,(1 миллион событий), отслеживая схему, затем удалите файл, как только число будет достигнуто, и снова начните буферизацию.Недостатком является то, что каждый файл будет иметь разную схему, что делает непрактичным обработку данных в нескольких файлах.

Другим решением будет поиск хранилищ данных без схемы, хотя вы не получаете ту же цену-производительные преимущества, как с ORC или Parquet на S3.

Есть и другие стратегии, но ваш лучший выбор для долгосрочного решения - поговорить с тем, кто управляет источником событий, которые вы глотаете, и найтиспособ определения схемы заранее.

...