Hive - Particionamento

O Hive organiza tabelas em partições. É uma maneira de dividir uma tabela em partes relacionadas com base nos valores de colunas particionadas, como data, cidade e departamento. Usando partição, é fácil consultar uma parte dos dados.

As tabelas ou partições são subdivididas em buckets,para fornecer estrutura extra aos dados que podem ser usados ​​para consultas mais eficientes. O agrupamento funciona com base no valor da função hash de alguma coluna de uma tabela.

Por exemplo, uma mesa chamada Tab1contém dados do funcionário, como id, nome, departamento e yoj (ou seja, ano de adesão). Suponha que você precise recuperar os detalhes de todos os funcionários que ingressaram em 2012. Uma consulta pesquisa toda a tabela em busca das informações necessárias. No entanto, se você particionar os dados do funcionário com o ano e armazená-los em um arquivo separado, isso reduz o tempo de processamento da consulta. O exemplo a seguir mostra como particionar um arquivo e seus dados:

O arquivo a seguir contém a tabela Employeedata.

/ tab1 / Employeedata / file1

id, name, dept, yoj
1, gopal, TP, 2012
2, kiran, HR, 2012
3, kaleel,SC, 2013
4, Prasanth, SC, 2013

Os dados acima são particionados em dois arquivos por ano.

/ tab1 / Employeedata / 2012 / file2

1, gopal, TP, 2012
2, kiran, HR, 2012

/ tab1 / Employeedata / 2013 / file3

3, kaleel,SC, 2013
4, Prasanth, SC, 2013

Adicionando uma Partição

Podemos adicionar partições a uma tabela alterando a tabela. Vamos supor que temos uma mesa chamadaemployee com campos como Id, Nome, Salário, Designação, Departamento e yoj.

Sintaxe:

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, ...)

A consulta a seguir é usada para adicionar uma partição à tabela de funcionários.

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

Renomeando uma Partição

A sintaxe desse comando é a seguinte.

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

A seguinte consulta é usada para renomear uma partição:

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

Soltando uma partição

A seguinte sintaxe é usada para descartar uma partição:

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

A seguinte consulta é usada para descartar uma partição:

hive> ALTER TABLE employee DROP [IF EXISTS]
   > PARTITION (year=’1203’);