Учебники

Улей — Разделение

Улей организует таблицы в разделы. Это способ разделения таблицы на связанные части на основе значений разделенных столбцов, таких как дата, город и отдел. Используя раздел, легко запросить часть данных.

Таблицы или разделы подразделяются на сегменты, чтобы обеспечить дополнительную структуру данных, которые могут использоваться для более эффективного запроса. Группировка работает на основе значения хеш-функции некоторого столбца таблицы.

Например, таблица с именем Tab1 содержит данные о сотрудниках, такие как id, name, dept и yoj (т. Е. Год присоединения). Предположим, вам нужно получить сведения обо всех сотрудниках, присоединившихся в 2012 году. Запрос ищет всю информацию во всей таблице. Однако если вы разделите данные о сотрудниках по году и сохраните их в отдельном файле, это сократит время обработки запроса. В следующем примере показано, как разделить файл и его данные:

Следующий файл содержит таблицу сотрудников.

/ Tab1 / employeedata / файл1

 id, name, dept, yoj
 1, Гопал, ТП, 2012
 2, Киран, HR, 2012
 3, Калее, СК, 2013
 4, Prasanth, SC, 2013

Приведенные выше данные разбиты на два файла с использованием года.

/ Tab1 / employeedata / 2012 / file2

 1, Гопал, ТП, 2012
 2, Киран, HR, 2012

/ Tab1 / employeedata / 2013 / file3

 3, Калее, СК, 2013
 4, Prasanth, SC, 2013

Добавление раздела

Мы можем добавить разделы в таблицу, изменив таблицу. Предположим, у нас есть таблица с именем employee, в которой есть такие поля, как Id, Name, Salary, Designation, Dept и yoj.

Синтаксис:

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...;

partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)

Следующий запрос используется для добавления раздела в таблицу сотрудников.

hive> ALTER TABLE employee
> ADD PARTITION (year=’2012’)
> location '/2012/part2012';

Переименование раздела

Синтаксис этой команды следующий.

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

Следующий запрос используется для переименования раздела:

hive> ALTER TABLE employee PARTITION (year=’1203’)
   > RENAME TO PARTITION (Yoj=’1203’);

Отбрасывание раздела

Следующий синтаксис используется для удаления раздела:

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...;

Следующий запрос используется для удаления раздела: