Partições & Buckets with Example

Índice:

Anonim

Tabelas, partições e intervalos são as partes da modelagem de dados Hive.

O que são partições?

Partições Hive é uma maneira de organizar tabelas em partições, dividindo as tabelas em partes diferentes com base nas chaves de partição.

A partição é útil quando a tabela tem 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 : -

"O cliente tem alguns dados de comércio eletrônico que pertencem às operações da Índia, nas quais cada estado (38 estados) opera como um todo. Se tomarmos a coluna de estado como chave de partição e executarmos partições nos dados da Índia como um todo, poderemos para obter o número de partições (38 partições) que é igual ao número de estados (38) presentes na Índia. De modo que os dados de cada estado podem ser visualizados separadamente em tabelas de partições.

Snippet de código de amostra para partições

  1. Criação da Tabela de todos os estados
create table all states(state string, District string,Enrolments string)row format delimitedfields terminated by ',';
  1. Carregando dados na tabela criada 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 seguintes capturas de tela mostrarão a execução do código mencionado acima

A partir do código acima, fazemos o seguinte

  1. Criação da tabela de todos os estados com 3 nomes de colunas, como estado, distrito e matrícula
  2. Carregando dados na tabela de 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. Vamos verificar isso nesta etapa. Nesta etapa, vemos as 38 saídas de partição em HDFS

O que é Buckets?

Buckets in hive é usado na segregação de dados da tabela hive em vários arquivos ou diretórios. ele é usado para consultas eficientes.

  • Os dados, ou seja, presentes nessas partições podem ser divididos ainda em Buckets
  • A divisão é realizada com base no Hash de colunas específicas que selecionamos na tabela.
  • Os intervalos usam alguma forma de algoritmo de hash no back-end para ler cada registro e colocá-los em intervalos
  • No Hive, temos que habilitar os buckets usando o set.hive.enforce.bucketing = true;

Etapa 1) Criação de balde conforme mostrado abaixo.

Da captura de tela acima

  • Estamos criando sample_bucket com nomes de coluna como first_name, job_id, departamento, salário e país
  • Estamos criando 4 baldes aqui.
  • Assim que os dados forem carregados automaticamente, coloque os dados em 4 depósitos

Etapa 2) Carregar dados no intervalo de amostra da tabela

Supondo que a "Tabela de funcionários" já tenha sido criada no sistema Hive. Nesta etapa, veremos o carregamento de dados da tabela de funcionários no depósito de amostra da tabela.

Antes de começar a mover os dados dos funcionários para os depósitos, certifique-se de que consistem em nomes de colunas como first_name, job_id, departamento, salário e país.

Aqui, estamos carregando dados em um intervalo de amostra da tabela de funcionários.

Etapa 3) Exibindo 4 intervalos que foram criados na Etapa 1

Na captura de tela acima, podemos ver que os dados da tabela de funcionários são transferidos para 4 depósitos criados na etapa 1.