Я использую и адаптирую устаревшую систему, где много таблиц разбиты на разделы, мои даты ISO без дефиса (20191011
вместо 2019-10-11
)
CREATE TABLE h_db.tt( name string, etc int, etc2 string )
PARTITIONED BY ( date_proc string )
ROW FORMAT DELIMITED FIELDS
TERMINATED BY ',' STORED AS ORC;
Дата может быть целым числом без потериинформация: в любом обыкновенном SQL лучше использовать целочисленный тип данных. Почему они использовали строку? Некоторые "старые традиции улья" предлагают это? В этом случае есть разумное использование строки вместо целого числа?
А что касается использования date в качестве критерия разбиения, то это хороший выбор для разбиения, когда система ежедневно подает данные... В 90% таблиц это имеет смысл (таблицы заполняются), но в некоторых таблицах столбец даты не изменяется (заполняется каждые 1 или 2 года), поэтому, почему мы должны использовать его как раздел?
PS: мы используем Apache Hive версии 1.2.1000.2 . Основные большие столы пришли из телекоммуникационных операций.