Inleiding tot Joins in Hive
Joins worden gebruikt om verschillende uitgangen op te halen met behulp van meerdere tabellen, door ze te combineren op basis van bepaalde kolommen. Voor de tabellen in Hive moeten we de tabellen maken en de gegevens in elke tabel laden. We gaan hier twee tabellen (klant en product) gebruiken om het doel te begrijpen.
Verschillende commando's
Hieronder staan de opdrachten voor het maken en laden van de gegevens in deze tabellen:
Voor klantentabel : 6 rijen
Commando maken
Maak een externe tabel als deze niet bestaat klant (id-string, naamstring, stadstring)
rij-indeling gescheiden
velden beëindigd door ''
locatie '/user/hive/warehouse/test.db/customer'
tblproperties ("skip.header.line.count" = "1");
Commando laden
Laad gegevens lokaal in pad '/home/cloudera/Customer_Neha.txt' in tabelklant;
Gegevens klantentabel
Voor producttabel : 6 rijen
Commando maken
Maak een externe tabel als het product niet bestaat (Cust_Id string,
Productstring, prijsstring)
rij-indeling gescheiden
velden beëindigd door ''
locatie '/user/hive/warehouse/test.db/product'
tblproperties ("skip.header.line.count" = "1");
Opdracht laden
Laad data lokaal pad '/home/cloudera/Product_Neha.txt' in tafelproduct;
Producttabelgegevens
Gebruik de opdracht "desc table name;" om het tabelschema te controleren.
Nu hebben we gegevens in tabellen, laten we ermee spelen ????
Soorten joins in Hive
Join- Dit geeft het kruisproduct van zowel de gegevens van de tabel als uitvoer. Zoals u kunt zien, hebben we 6 rijen in elke tabel. De uitvoer voor Join is dus 36 rijen. Het aantal mappers-1. Er wordt echter geen reductie aan de operator gebruikt.
Commando
Output:
1. Volledige deelname
Volledige deelname zonder wedstrijdvoorwaarde geeft het kruisproduct van beide tabellen.
Aantal mappers-2
Aantal verloopstukken-1
Dit kan ook worden bereikt met "Join", maar met minder aantal mapper en reducer.
Volledig meedoen met wedstrijdvoorwaarde
Alle rijen worden vanuit beide tabellen samengevoegd. Als rijen niet overeenkomen in een andere tabel, wordt NULL ingevuld in de uitvoer (zie Id-100, 106). Er worden geen rijen overgeslagen.
Aantal mappers-2
Aantal verloopstukken-1
Commando
Output:
2. Innerlijke join
Als de binnenste join wordt gebruikt zonder de clausule “aan”, geeft dit het kruisproduct als uitvoer. We zijn echter verplicht om de specifieke kolommen te gebruiken op basis waarvan de join kan worden uitgevoerd. De ID-kolom uit de klantentabel en Cust_id-kolom uit de producttabel zijn mijn specifieke kolommen. De uitvoer bevat de rijen waar Id en Cust_Id overeenkomen. U kunt observeren dat rijen met ID-106 en Cust_Id-100 in uitvoer worden overgeslagen omdat ze niet in een andere tabel aanwezig zijn.
Commando
Output:
3. Linker deelname
Alle rijen uit de linkertabel worden verbonden met overeenkomende rijen uit de rechtentabel. Als de rechter tabel rijen heeft met id's die niet aanwezig zijn in de linker tabel dan worden die rijen overgeslagen (zie Cust_Id-100 in uitvoer). Als de rechtertabel geen rijen bevat met ID's die in de linkertabel staan, wordt NULL ingevuld in uitvoer (zie Id-106 in uitvoer).
Aantal Mapper-1
Aantal verloopstukken-0
Commando
Output:
4. Rechts meedoen
Alle rijen uit de rechtertafel worden gekoppeld aan de linkerrijen. Als de linkertabel geen rij heeft, wordt NULL ingevuld (let op ID 100). Rijen uit de linker tabel worden overgeslagen als die match niet in de rechter tabel wordt gevonden (let op id 106).
Aantal Mapper-1
Aantal verloopstukken-0
Commando
Output:
Conclusie - sluit zich aan bij Hive
"Join", zoals het woord al doet vermoeden, kan twee of meer tabellen in de database opnemen. Het is vergelijkbaar met joins in SQL. Joins worden gebruikt om verschillende uitgangen op te halen met behulp van meerdere tabellen, door ze te combineren op basis van bepaalde kolommen. Op basis van de vereiste kan worden besloten welke join voor u werkt. Als u bijvoorbeeld wilt controleren wat de id's in de linkertabel zijn, maar niet in de rechtertabel, kunt u eenvoudig link join gebruiken. Afhankelijk van de complexiteit kunnen verschillende optimalisaties in bijenkorfverbindingen worden uitgevoerd. Enkele voorbeelden zijn repartitie-joins, replicatie-joins en semi-joins.
Aanbevolen artikelen
Dit is een gids voor Joins in Hive. Hier bespreken we de typen joins zoals full join, inner join, left join en right join in hive samen met het commando en de uitvoer. U kunt ook de volgende artikelen bekijken voor meer informatie-
- Wat is een bijenkorf?
- Hive Commands
- Hive Training (2 cursussen, 5+ projecten)
- Apache Pig vs Apache Hive - Top 12 nuttige verschillen
- Kenmerken van Hive alternatieven
- ORDER BY-functie gebruiken in Hive
- Top 6 soorten joins in MySQL met voorbeelden