2016-09-01 7 views
1

я могу иметь возможность загружать данные в улье, используя следующую команду:Загрузка данных с использованием нагрузки данных в Hive/Impala

LOAD DATA INPATH '/xx/person/a.csv' INTO TABLE person PARTITION (age = 30); 

в заявлении выше, age=30 является раздел, в котором данные должны быть сохранены.

что делать если a.csv на самом деле есть возрастная колонка внутри? Есть ли способ получить улей, чтобы правильно вставить каждую строку a.csv в таблицу моего человека под правильным разделом с помощью одного оператора LOAD DATA?

ответ

1

LOAD DATA поддерживает только статическое разбиение на разделы: «Когда оператор LOAD DATA работает в секционированной таблице, он всегда работает на одном разделе за раз».

INSERT, с другой стороны, поддерживает динамическое разбиение на разделы: «Если упоминается столбец ключа раздела, но не назначено значение, [...] неназначенные столбцы заполняются конечными столбцами списка SELECT».

Итак, что вы можете сделать, это определить таблицу по исходным данным, дополнительно также определить представление для перемещения столбцов раздела в конечные позиции и, наконец, использовать insert into [...] select [...] для заполнения секционированной таблицы из представления.

 Смежные вопросы

  • Нет связанных вопросов^_^