tgoop.com/data_engineerette/384
Create:
Last Update:
Last Update:
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);
Теперь пойдем вставлять данные
INSERT INTO sales_data
PARTITION (date=’2024–03–23', country=’USA’) VALUES (...);
Здесь мы заранее говорим, в какую партицию будем вставлять кусок данных
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 означает, что должна существовать хотя бы одна статическая партиция (о чем и была ошибка)
