Улей разбит на разделы по дате - одновременная обработка нескольких дат? - PullRequest
0 голосов
/ 09 июля 2020

У меня может быть пробел в понимании разбиения улья. У меня есть внешняя таблица, разделенная по дате. Я создаю файлы паркета с помощью запроса к управляемой таблице улья. В настоящее время я запускаю сценарий bash для инкрементной обработки по дате (которая предоставляется в запрос). Есть ли лучший способ обработки нескольких дат?

Таблица создается следующим образом:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

CREATE EXTERNAL TABLE my_table (id int, product string)
PARTITIONED BY (dt string)
LOCATION '/path/to/location'

Мой bash скрипт по существу выполняет итерацию дат и вставляет данные через:

INSERT OVERWRITE TABLE my_table (dt='2020-07-09')
SELECT id, product FROM managed_table WHERE dt = '2020-07-09';

Итак, это работает, но только раз в день, что кажется не очень эффективным. Есть способ лучше?

1 Ответ

2 голосов
/ 09 июля 2020

Вы вставляете запись с использованием раздела stati c. Чтобы создать раздел Dynami c при ВСТАВКЕ данных, вы можете определить раздел Dynami c, как показано ниже. Вам также потребуется УСТАНОВИТЬ правила разделов hive Dynami c. Это необходимо для включения динамического c раздела.

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

INSERT OVERWRITE INTO TABLE my_table PARTITION(dt)
SELECT 
 id, 
 product,
 dt
FROM managed_table;

Подробнее о динамическом c разделе в кусте .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...