Сценарий:
- Данные ежедневно загружаются / вставляются в одну таблицу с помощью простого файла. Мы назовем эту таблицу 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 и все это под одной таблицей я не могу изменить.