Junta-se ao Hive - Aprenda tipos de junções com seus comandos e saídas

Índice:

Anonim

Introdução às junções no Hive

As junções são usadas para recuperar várias saídas usando várias tabelas, combinando-as com base em colunas específicas. Agora, para que as tabelas estejam no Hive, é necessário criar as tabelas e carregar os dados em cada tabela. Vamos usar duas tabelas (cliente e produto) aqui para entender a finalidade.

Comandos diferentes

Abaixo estão os comandos para criar e carregar os dados nessas tabelas:

Para tabela do cliente : 6 linhas

Comando Criar

Criar tabela externa, se não existir cliente (sequência de identificação, sequência de nomes, sequência de cidades)
formato de linha delimitado
campos terminados por ''
local '/user/hive/warehouse/test.db/customer'
tblproperties ("skip.header.line.count" = "1");

Comando Load

Carregue os dados locais no caminho '/home/cloudera/Customer_Neha.txt' na tabela customer;

Dados da tabela do cliente

Para tabela de produtos : 6 linhas

Comando Criar

Crie uma tabela externa se não existir um produto (sequência Cust_Id,
Cadeia de produtos, Cadeia de preços)
formato de linha delimitado
campos terminados por ''
local '/user/hive/warehouse/test.db/product'
tblproperties ("skip.header.line.count" = "1");

Comando Load

Carrega o caminho local dos dados '/home/cloudera/Product_Neha.txt' no produto da tabela;

Dados da tabela de produtos

Nota : Estou usando "properties (" skip.header.line.count "=" 1 ")" para pular a primeira linha dos meus dados, que é o cabeçalho para mim.

Para verificar o esquema da tabela, use o comando "desc table name;"


Agora, temos dados em tabelas, vamos brincar com isso ????

Tipos de junções no Hive

Unir - Isso fornecerá o produto cruzado dos dados da tabela como saída. Como você pode ver, temos 6 linhas em cada tabela. Portanto, a saída para Join será de 36 linhas. O número de mapeadores-1. No entanto, não há redução para o operador é usado.

Comando

Resultado:

1. Ingresso Completo

A junção completa sem condição de correspondência fornecerá o produto cruzado de ambas as tabelas.

Número de mapeadores-2

Número de redutor-1

Isso pode ser conseguido usando "Join" também, mas com menos número de mapeador e redutor.

Junção completa com condição de correspondência

Todas as linhas serão unidas nas duas tabelas. Se as linhas não corresponderem a outra tabela, NULL será preenchido na saída (Observe a Id-100.106). Nenhuma linha é ignorada.

Número de mapeadores-2

Número de redutor-1

Comando

Resultado:

2. Junção interna

Se a junção interna for usada sem a cláusula “on”, ela fornecerá o produto cruzado como saída. No entanto, somos obrigados a usar as colunas específicas nas quais a junção pode ser executada. A coluna Id da tabela do cliente e a coluna Cust_id da tabela do produto são minhas colunas específicas. A saída contém as linhas em que Id e Cust_Id correspondem. Você pode observar que as linhas com Id-106 e Cust_Id-100 são ignoradas na saída porque não estão presentes em outra tabela.

Comando

Resultado:

3. Junção esquerda

Todas as linhas da tabela esquerda são unidas às linhas correspondentes da tabela direita. Se a tabela da direita tiver linhas com IDs que não estão presentes na tabela da esquerda, essas linhas serão ignoradas (Observe Cust_Id-100 na saída). Se a tabela da direita não tiver linhas com os IDs existentes na tabela da esquerda, NULL será preenchido na saída (Observe o Id-106 na saída).

Número de Mapper-1

Número de redutor-0

Comando

Resultado:

4. Junção certa

Todas as linhas da tabela direita são correspondidas com as linhas da tabela esquerda. Se a tabela esquerda não tiver nenhuma linha, NULL será preenchido (observe a identificação 100). As linhas da tabela esquerda serão puladas se essa correspondência não for encontrada na tabela direita (observe o Id 106).

Número de Mapper-1

Número de redutor-0

Comando

Resultado:

Conclusão - Junta-se ao Hive

"Associar-se", como a palavra sugere, pode associar duas ou mais tabelas no banco de dados. É semelhante a junções no SQL. As junções são usadas para recuperar várias saídas usando várias tabelas, combinando-as com base em colunas específicas. Com base no requisito, pode-se decidir qual associação funcionará para você. Por exemplo, se você quiser verificar quais são os IDs presentes na tabela esquerda, mas não na tabela direita, você pode simplesmente usar a junção esquerda. Várias otimizações podem ser executadas em junções de seção, dependendo da complexidade. Alguns dos exemplos são junções de reparticionamento, junções de replicação e semi-junções.

Artigos recomendados

Este é um guia para Associações no Hive. Aqui discutimos os tipos de junções, como junção completa, junção interna, junção esquerda e junção direita na seção, juntamente com seu comando e saída. Você também pode consultar os seguintes artigos para saber mais:

  1. O que é uma colméia?
  2. Comandos do Hive
  3. Hive Training (2 cursos, 5+ projetos)
  4. Apache Pig vs Apache Hive - As 12 principais diferenças úteis
  5. Recursos das alternativas do Hive
  6. Usando a função ORDER BY no Hive
  7. Os 6 principais tipos de junções no MySQL com exemplos