Video: Sammanfoga celler 2024
Du vet nog redan att experter i relationell databasmodellering och design brukar spendera mycket tid på att designa normaliserade databaser, eller scheman <. Databas Normalisering är en teknik som skyddar mot dataförluster, redundans och andra avvikelser eftersom data uppdateras och hämtas. Experterna följer ett antal regler för att komma fram till en normaliserad databas, men regel 1 är att du måste sluta med en
grupp av tabellerna. (Ett stort bord som lagrar alla dina data är inte normalt - punten är avsedda.) Det finns undantag, beroende på användningsfallet, men lagen i många tabeller följs vanligtvis noga, särskilt för databaser som stöder transaktioner eller analytisk bearbetning (business intelligence, till exempel).
Vad har allt detta att göra med att gå med i Hive? Tja, kom ihåg att det underliggande operativsystemet för Hive är (överraskning!) Apache Hadoop: MapReduce är motorn för att ansluta till tabeller, och Hadoop File System (HDFS) är det underliggande lagret. Det är allt bra nyheter för användaren som vill skapa, hantera och analysera stora tabeller med Hive.
Kom ihåg att MapReduce och HDFS optimeras för genomströmning med stor dataanalys och att i den här världen är
latenser - användartidstider, med andra ord - vanligtvis höga. Hive är konstruerad för analytisk bearbetning i batchformat, inte för snabb online-transaktionsbehandling. Användare som vill ha bästa möjliga prestanda med SQL på Apache Hadoop har lösningar tillgängliga.
Eftersom Hive-tabellen läser och skriver via HDFS brukar innebära mycket stora datablock, desto mer data kan du hantera helt och hållet i ett bord, desto bättre blir resultatet.
Disk- och nätverksåtkomst är mycket långsammare än minnesåtkomst, så att HDFS-läsaren minimeras och läses så mycket som möjligt.
Med den här bakgrundsinformationen i åtanke kan du ta itu med att du går med Hive. Lyckligtvis var Hive-utvecklingssamhället realistiskt och förstod att användarna skulle vilja och behöver ansluta sig till tabeller med HiveQL. Denna kunskap blir speciellt viktig med EDW augmentation. Använda fall som "förfrågningsbara" arkiv kräver ofta anslutningar för dataanalys.
Här är ett Hive Join-exempel med flygdatatabeller. Listan visar hur du skapar och visar en myflightinfo2007 tabell och en myflightinfo2008 tabell från de större FlightInfo2007 och FlightInfo2008 tabellerna. Planen hela tiden var att använda CTAS skapade myflightinfo2007 och myflightinfo2008 tabeller för att illustrera hur du kan utföra samverkan i Hive.
Figuren visar resultatet av ett inre sammanhang med myflightinfo2007 och myflightinfo2008-tabellerna med SQuirreL SQL-klienten.
Hive stöder
equi-joins, en särskild typ av medlemskap som endast använder jämlikhetsjämförelser i anslutningsprotikatet. (ON m8. FlightNum = m7. FlightNum är ett exempel på en equi-join.) Andra komparatorer som mindre än (<) stöds inte. Denna begränsning är bara på grund av begränsningar på den underliggande MapReduce-motorn. Du kan också inte använda ELLER i ON-klausulen. Figuren illustrerar det tidigare exemplet på den inre föreningen och två andra Hive-föreningar. Observera att du kan bekräfta resultatet av ett inre sammanhang genom att granska innehållet i myflight2007 och myflight2008-tabellerna.
Följande bild illustrerar hur ett inre sammanhang fungerar med ett Venn-diagram, om du inte är bekant med tekniken. Grundidén här är att ett inre parti returnerar de poster som matchar mellan två tabeller. Så ett inre sammanhang är ett perfekt analysverktyg för att bestämma vilka flygningar som är samma från JFK (New York) till ORD (Chicago) i juli 2007 och juli 2008.
Optimera Hive-medlemmar är ett hett ämne i Hive-community. För mer information om aktuella optimeringstekniker, se sidan Anpassa optimering på Hive wiki.