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 означает, что должна существовать хотя бы одна статическая партиция (о чем и была ошибка)````