avatar
дата инженеретта
@data_engineerette
30.06.2025 11:10
Static vs Dynamic Partitioning

В Hive есть два вида партицирования: статическое и динамическое

Сначала я столкнулась с ошибкой:

Exception in thread "main" org.apache.spark.SparkException: Dynamic partition strict mode requires at least one static partition column. To turn this off set hive.exec.dynamic.partition.mode=nonstrict


Давайте разберем на примерах

У нас есть таблица, которая партицирована по двум полям:

CREATE TABLE sales_data (...)
PARTITIONED BY (date STRING, country STRING);


Теперь пойдем вставлять данные

emojiСтатическое

INSERT INTO sales_data
PARTITION (date=’2024–03–23', country=’USA’) VALUES (...);


Здесь мы заранее говорим, в какую партицию будем вставлять кусок данных

emoji Динамическое

INSERT INTO sales_data
PARTITION (date, country)
VALUES (..., ‘2024–03–23’, ‘USA’);


Здесь Hive сам определяет по данным, которые мы вставляем

Но чтобы такое сработало, нужны 2 конфига:

.config("hive.exec.dynamic.partition", "true")
.config("hive.exec.dynamic.partition.mode", "nonstrict")


По дефолту стоят false и strict. strict означает, что должна существовать хотя бы одна статическая партиция (о чем и была ошибка)
17
👍 8
🔥 6
20 12 2.3K

Обсуждение 20

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram