В Hive нет такой вещи, как динамически секционированная таблица. Таблица может быть секционированной или не секционированной. Режим динамического раздела - это способ загрузки данных во время INSERT - можно указать один статический раздел или разделы могут быть загружены динамически из выбора.
Пример загрузки динамических перегородок:
Insert overwrite table tabName partition(dt) --partition is not specified
select sno,city,address,dt from tabStg where...; --will be loaded dynamically
Пример статической нагрузки на перегородку:
Insert overwrite table tabName partition(dt='2021-03-01') --static partition specified
select sno,city,address from tabStg where dt='2021-03-01'; --take care about correct data loaded
В последнем указанном статическом разделе запроса: partition(dt='2021-03-01')
, обратите внимание, что в этом случае столбец раздела не присутствует в select. Вы можете загрузить другие даты в тот же раздел, если не фильтруете в WHERE.
Разница между ними в том, что в случае динамической загрузки вы можете перезаписать все существующие разделы и загрузить новые, в случае статической загрузки вы можете загрузить только раздел, указанный в спецификации раздела. Если динамический режим не включен, первый запрос завершится ошибкой, это своего рода защита от непреднамеренной перезаписи разделов, и ничего больше.
Если в папке таблицы появилась новая папка раздела, ничего не происходит автоматически, вам нужно создать раздел в таблице tabStg, если это еще не было сделано с помощью MSCK REPAIR или ALTER TABLE, затем повторите загрузку во вторую таблицу tabName, используя статическую или динамическую загрузку.
В дополнение к этому, Hive может управлять разделами автоматически: добавлять раздел, если новая папка раздела была загружена в папку таблицы в файловой системе третьими средствами. Подробнее: Управление разделы автоматически - если эта функция работает в вашем Hive, вы можете обойтись без добавления разделов вручную (таблица REPAIR или ATER не требуется, если у вас есть эта функция) в исходной таблице. Но в любом случае загрузка данных во вторую таблицу должна производиться как раньше.
person
leftjoin
schedule
20.03.2021