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

  1. Criação de Tabela todos os estados
create table all states(state string, District string,Enrolments string)

row format delimited

fields terminated by ',';
  1. Carregando dados na tabela criada em todos os estados
Load data local inpath '/home/hduser/Desktop/AllStates.csv' into table allstates;
  1. Criação de tabela de partição
create table state_part(District string,Enrolments string) PARTITIONED BY(state string);
  1. Para partição, temos que definir esta propriedade
    set hive.exec.dynamic.partition.mode=nonstrict
  2. Carregando dados na tabela de partição
INSERT OVERWRITE TABLE state_part PARTITION(state)
SELECT district,enrolments,state from  allstates;
  1. Processamento real e formação de tabelas de partição com base no estado como chave de partição
  2. 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

Partições de colmeia

Partições de colmeia

Partições de colmeia

Partições de colmeia

A partir do código acima, fazemos o seguinte

  1. Criação de tabela todos os estados com 3 nomes de colunas como estado, distrito e matrícula
  2. Carregando dados na tabela todos os estados
  3. Criação de tabela de partição com estado como chave de partição
  4. Nesta etapa Definir o modo de partição como não estrito (este modo ativará o modo de partição dinâmica)
  5. Carregando dados na partição tablestate_part
  6. Processamento real e formação de tabelas de partição com base no estado como chave de partição
  7. 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.

Baldes de colmeia

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.

Baldes de colmeia

Passo 3)Exibindo 4 buckets criados na Etapa 1

Baldes de colmeia

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.