Динамическое разделение

Я создал внешнюю таблицу в улье, используя:

create external table if not exists summary(
    `Restaurant ID` INT,
    `Restaurant Name` STRING)
PARTITIONED BY (p_filedate INT, p_country_name STRING)
stored as ORC;

Теперь, когда я пытаюсь заполнить таблицу, используя:

INSERT overwrite table zomato_summary partition(p_filedate,p_country_name)
SELECT  
        `restaurant id`,
         ISNULL( `restaurant name`,'NA')
FROM Sales;

Я получаю следующую ошибку:

FAILED: SemanticException [Error 10011]: Invalid function any

Вероятно, Hive рассматривает ключевое слово partition как UDF, поэтому возникает ошибка.

Пожалуйста, предложите альтернативный метод динамического разделения на несколько столбцов.


person Sandeepan    schedule 17.05.2021    source источник


Ответы (1)


При загрузке разделов в динамическом режиме выбор должен включать столбцы разделов (в том же порядке, что и в таблице DDL).

Например вот так:

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

INSERT overwrite table zomato_summary partition(p_filedate,p_country_name)
SELECT  
        `restaurant id`,
         ISNULL( `restaurant name`,'NA'), --ISNULL exists not in all versions, use COALESCE or NVL
         current_date, --or proper column from sales 
         country_name
FROM Sales;
person leftjoin    schedule 17.05.2021