Partições e buckets do Hive com exemplo
Tabelas, partições e buckets são partes da modelagem de dados do Hive.
O que são partições?
Hive Partitions é uma forma de organizar tabelas em partições, dividindo as tabelas em diferentes partes com base em chaves de partição.
A partição é útil quando a tabela possui uma ou mais chaves de partição. As chaves de partição são elementos básicos para determinar como os dados são armazenados na tabela.
Por Exemplo: -
“Cliente com alguns dados de comércio eletrônico que pertencem às operações da Índia nas quais cada estado (38 estados) opera mencionado como um todo. Se tomarmos a coluna de estado como chave de partição e realizarmos partições nos dados da Índia como um todo, poderemos obter o número de partições (38 partições) que é igual ao número de estados (38) presentes na Índia. Tal que cada dado de estado possa ser visualizado separadamente em tabelas de partições.
Exemplo de trecho de código para partições
- Criação de Tabela todos os estados
create table all states(state string, District string,Enrolments string) row format delimited fields terminated by ',';
- Carregando dados na tabela criada em todos os estados
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
- Criação de tabela de partição
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
- Para partição, temos que definir esta propriedade
set hive.exec.dynamic.partition.mode=nonstrict
- Carregando dados na tabela de partição
INSERT OVERWRITE TABLE state_part PARTITION(state) SELECT district,enrolments,state from allstates;
- Processamento real e formação de tabelas de partição com base no estado como chave de partição
- Haverá 38 saídas de partição no armazenamento HDFS com o nome do arquivo como nome do estado. Vamos verificar isso nesta etapa
As capturas de tela a seguir mostrarão a execução do código mencionado acima
A partir do código acima, fazemos o seguinte
- Criação de tabela todos os estados com 3 nomes de colunas como estado, distrito e matrícula
- Carregando dados na tabela todos os estados
- Criação de tabela de partição com estado como chave de partição
- Nesta etapa Definir o modo de partição como não estrito (este modo ativará o modo de partição dinâmica)
- Carregando dados na partição tablestate_part
- Processamento real e formação de tabelas de partição com base no estado como chave de partição
- Haverá 38 saídas de partição no armazenamento HDFS com o nome do arquivo como nome do estado. Iremos verificar isso nesta etapa. Nesta etapa, vemos as 38 saídas de partição no HDFS
O que são baldes?
Os baldes no hive são usados na segregação dos dados da tabela do hive em vários arquivos ou diretórios. ele é usado para consultas eficientes.
- Os dados presentes nessas partições podem ser divididos em Buckets
- A divisão é realizada com base no Hash de colunas específicas que selecionamos na tabela.
- Os buckets usam alguma forma de algoritmo de hash no back-end para ler cada registro e colocá-lo em buckets
- No Hive, temos que habilitar buckets usando o set.hive.enforce.bucketing=true;
Passo 1) Criando Bucket conforme mostrado abaixo.
Da captura de tela acima
- Estamos criando sample_bucket com nomes de colunas como first_name, job_id, departamento, salário e país
- Estamos criando 4 baldes aqui.
- Depois que os dados forem carregados automaticamente, coloque-os em 4 baldes
Passo 2) Carregando dados no intervalo de amostra de tabela
Supondo que a “tabela Funcionários” já tenha sido criada no sistema Hive. Nesta etapa, veremos o carregamento dos dados da tabela de funcionários no intervalo de amostra da tabela.
Antes de começarmos a mover os dados dos funcionários para os buckets, certifique-se de que eles consistam em nomes de colunas como first_name, job_id, departamento, salário e país.
Aqui estamos carregando dados no intervalo de amostra da tabela de funcionários.
Passo 3)Exibindo 4 buckets criados na Etapa 1
Na captura de tela acima, podemos ver que os dados da tabela de funcionários são transferidos para 4 buckets criados na etapa 1.