Стратегия разделения HIVE для двух разных требований - PullRequest
0 голосов
/ 16 января 2020

Сценарий:

  • Данные ежедневно загружаются / вставляются в одну таблицу с помощью простого файла. Мы назовем эту таблицу TABLE_A.
  • Данные ежедневно используются из TABLE_A в новые таблицы. 9/10 раз запрос будет «выбрать * из таблицы TABLE_A, где load_date = вчера».
  • Данные хранятся в HDFS (таблицы Hive Avro).

Проблема

При хранении данных за 7 с лишним лет вопрос о таблице означает сканирование более 2500 файлов и миллиардов строк данных для ETL запросы, которые заинтересованы только в «новых данных». Это может быть легко достигнуто путем разбиения таблицы на загрузочные данные, но при этом существует более 2500 разделов с 2500+ файлами.

Мой вопрос:

Мне нужно решение, которое не означает, что в моей таблице более 2500 разделов для 2500+ файлов. Я думал, что в идеале было бы разделить по дате загрузки ( 01-01-2019 ) на первые 30 дней, а затем разделить что-то вроде месяца (01- 02 - 2019) вместо этого. Но это может включать в себя наличие 1 таблицы и логики секционирования c, которые, я думаю, не существуют.

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

Хотя я хотел бы использовать разные технологии или стратегии, концепция хранения в HDFS и все это под одной таблицей я не могу изменить.

...