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