Video: Alteryx - Scaricare file Json 2024
Probabilmente già sai che gli esperti di modellazione e progettazione di database relazionali di solito passano molto tempo a progettare database normalizzati, o schemi <. Il database normalizzazione è una tecnica che protegge da perdita di dati, ridondanza e altre anomalie man mano che i dati vengono aggiornati e recuperati. Gli esperti seguono un certo numero di regole per arrivare a un database normalizzato, ma la Regola 1 è che devi finire con un
gruppo di tabelle. (Una grande tabella che memorizza tutti i tuoi dati non è normale - giochi di parole.) Ci sono eccezioni, a seconda del caso d'uso, ma la legge di molte tabelle è generalmente seguita da vicino, specialmente per i database che supportano le transazioni o l'elaborazione analitica (business intelligence, per esempio).
Cosa c'entra tutto questo con i join in Hive? Bene, ricorda che il sistema operativo sottostante per Hive è (sorpresa!) Apache Hadoop: MapReduce è il motore per l'unione delle tabelle e Hadoop File System (HDFS) è lo storage sottostante. Sono tutte buone notizie per l'utente che desidera creare, gestire e analizzare tabelle di grandi dimensioni con Hive.
Ricorda che MapReduce e HDFS sono ottimizzati per il throughput con analisi dei big data e che, in questo mondo, latenze - i tempi di risposta degli utenti, in altre parole, sono in genere elevati. Hive è progettato per l'elaborazione analitica in batch, non per l'elaborazione rapida delle transazioni online. Gli utenti che desiderano ottenere le migliori prestazioni possibili con SQL su Apache Hadoop hanno a disposizione soluzioni.
Poiché la tabella Hive legge e scrive tramite HDFS di solito coinvolgono blocchi di dati molto grandi, maggiore è il numero di dati che è possibile gestire complessivamente in una tabella, migliori sono le prestazioni generali.
L'accesso al disco e alla rete è molto più lento dell'accesso alla memoria, in modo da ridurre al minimo l'HDFS in lettura e scrittura il più possibile.
Tenendo presenti queste informazioni di base, puoi affrontare la creazione di join con Hive. Fortunatamente, la comunità di sviluppo di Hive era realistica e capiva che gli utenti avrebbero voluto e avrebbero dovuto unirsi alle tabelle con HiveQL. Questa conoscenza diventa particolarmente importante con l'aumento di EDW. Casi d'uso come gli archivi "interrogabili" richiedono spesso join per l'analisi dei dati.
Ecco un esempio di join Hive che utilizza le tabelle di dati di volo. L'elenco mostra come creare e visualizzare una tabella myflightinfo2007 e una tabella myflightinfo2008 dalle tabelle FlightInfo2007 e FlightInfo2008 più grandi. Il piano da sempre era quello di utilizzare il CTAS creato myflightinfo2007 e myflightinfo2008 tabelle per illustrare come è possibile eseguire join in Hive.
La figura mostra il risultato di un join interno con le tabelle myflightinfo2007 e myflightinfo2008 che utilizzano il client SQL di SQuirreL.
Hive supporta
equi-joins, un tipo specifico di join che utilizza solo confronti di uguaglianza nel predicato di join. (Su m8 FlightNum = m7 FlightNum è un esempio di equi-join.) Altri comparatori come Less Than (<) non sono supportati. Questa restrizione è solo a causa di limitazioni sul motore MapReduce sottostante. Inoltre, non è possibile utilizzare OR nella clausola ON. La figura illustra l'esempio precedente del join interno e altri due tipi di join Hive. Si noti che è possibile confermare i risultati di un join interno riesaminando i contenuti delle tabelle myflight2007 e myflight2008.
La seguente figura illustra come funziona un raccordo interno utilizzando un diagramma di Venn, nel caso in cui non si abbia familiarità con la tecnica. L'idea di base è che un'unione interna restituisce i record che corrispondono tra due tabelle. Quindi un inner join è uno strumento di analisi perfetto per determinare quali voli sono gli stessi da JFK (New York) a ORD (Chicago) nel luglio del 2007 e luglio del 2008.
Ottimizzare i join Hive è un argomento caldo nella comunità Hive. Per ulteriori informazioni sulle attuali tecniche di ottimizzazione, vedere la pagina Join Optimization sul wiki Hive.