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’);