Разделение в таблице Hive с несколькими значениями? - PullRequest
0 голосов
/ 11 октября 2018

Я хочу создать простую секционированную таблицу улья и добавить в нее команду sqoop import.

1. В таблице есть, скажем, 4 столбца, ID, col1, col2, col3.

В одном из столбцов указано, что col2 имеет тип int и содержит значения только от 1 до 10.

Мне нужно разбить таблицу на основе столбца col2 с данными от 1 до 5 значенийдолжен быть в одном разделе, а остальные в другом.

В настоящее время я пытаюсь это, что не работает: Изменить таблицу tblname добавить раздел (col2 = 1, col2 = 2, col2 = 3, col2= 4, col2 = 5) местоположение 'Part1';

После этого мне нужно заполнить эту таблицу импортом sqoop с моего сервера sql.

Я пробовал много способов, но не смог этого сделать.Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 11 октября 2018

Создайте секционированную таблицу и вручную добавьте раздел, например 1_to_3

create table ptable(name string) partitioned by (id string);
alter table ptable add partition (id='1_to_3');

show partitions ptable;
+------------+--+
| partition  |
+------------+--+
| id=1_to_3  |
+------------+--+

Я знаю, что я должен загрузить данные из таблицы отделов в этот раздел, если идентификатор отдела 1 или 2 или 3.

insert into ptable partition(id = '1_to_3') select department_name from departments where department_id between 1 and 3;

См. Скриншот

enter image description here

select * from ptable;
+------------------+------------+--+
|   ptable.name    | ptable.id  |
+------------------+------------+--+
| Marketing        | 1_to_3     |
| Finance          | 1_to_3     |
| Human Resources  | 1_to_3     |
+------------------+------------+--+

Возможно, вам понадобится добавить другой раздел для хранения других значений, например department_id > 3

...