Загрузка данных в таблицу hive с динамическим секционированием

Файл empdetails.журнал имеет ниже данные-

100 AAA 12000 HYD

101 BBB 13000 ПУНА

102 CCC 14000 HYD

103 DDD 10000 BLORE

104 EEE 12000 ПУНА

Я хочу загрузить эти данные в таблицу’ Emp ‘ с динамическим разделением, таким образом, что select * from Emp; дает мне следующие выходные данные(секционированные по местоположению).

100 AAA 12000 HYD

102 CCC 14000 HYD

101 BBB 13000 ПУНА

104 EEE 12000 ПУНА

103 DDD 10000 BLORE

Может ли кто-нибудь предоставить команду загрузки для выполнения в hive.

ТАБЛИЦА СОЗДАНА-
создать таблицу Emp (CID int, cname string, csal int)
секционировано (строка cloc)
формат строки разделен
поля заканчиваются на ‘t’
сохраненный как textfile;

1 ответ

  1. Для динамического секционирования необходимо использовать INSERT … Выберите запрос (Hive insert).

    Вставка данных в таблицу Hive, имеющую DP, представляет собой двухэтапный процесс.

    1. Создание промежуточной таблицы в промежуточной базе данных в hive и загрузка данных в эту таблицу из
      внешний источник, такой как СУБД, база данных документов или локальные файлы
      использование нагрузки улья.
    2. Вставка данных в фактическую таблицу в ODS (хранилище операционных данных/окончательная база данных) с помощью Hive insert.

    Кроме того, задайте следующие свойства в Hive.

    • Установить улей.выполнение.активный.partition=true;
    • Установить улей.выполнение.активный.раздел.mode=нестрикционный;

    Следующий пример работает на виртуальной машине cloudera.

    -- Extract orders data from mysql (Retail_DB.products) 
    select * from orders into outfile '/tmp/orders_data.psv' fieldsterminated by '|' lines terminated by 'n';
    
    -- Create Hive table with DP - order_month is DP.
    CREATE TABLE orders (order_id int, order_date string, order_customer_id int, order_status string ) PARTITIONED BY (order_month string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'STORED AS TEXTFILE;
    
    --Create staging table in Hive.
    CREATE TABLE orders_stage (order_id int,order_date string, order_customer_id int, order_status string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE;
    
    --Load data into staging table (Hive)
    Load data into staging table  load data local inpath 
    /tmp/orders_data.psv' overwrite into table orders_stage;
    
    --Insert into Orders, which is final table (Hive). 
    Insert overwrite table retail_ods.orders partition (order_month)
    select order_id, order_date, order_customer_id,order_status,
    substr(order_date, 1, 7) order_month from retail_stage.orders_stage;
    

    Вы можете найти больше деталей на https://cwiki.apache.org/confluence/display/Hive/DynamicPartitions