Hive ETL: caricamento di esempi di dati di testo, JSON, XML

โšก Riepilogo intelligente

Hive ETL trasforma file di testo, XML e JSON in tabelle interrogabili caricandoli in Hive ed esplorendolitracestraendo valori con xpath() e get_json_object(), si fornisce agli analisti un'interfaccia SQL sui dati Hadoop semi-strutturati.

  • ๐Ÿงฑ Carichi strutturati: Un file di testo delimitato diventa una tabella con ROW FORMAT DELIMITED piรน FIELDS TERMINATED BY, quindi LOAD DATA LOCAL INPATH.
  • ๐Ÿท๏ธ Esempio XMLtraczione: Ogni documento XML รจ contenuto in un'unica colonna di tipo STRINGA e la funzione xpath() estrae i valori dai tag denominati.
  • ๐Ÿ”‘ Esempio JSONtraczione: La funzione get_json_object() legge un'espressione JSONPath per ogni chiamata, quindi ogni campo richiede una chiamata separata.
  • ๐Ÿชœ Carichi utili annidati: Il caricamento di JSON complessi avviene esattamente allo stesso modo e la gerarchia viene percorsa tramite espressioni JSONPath con punta.
  • ๐Ÿ“ Regole del percorso: La parola chiave LOCAL legge dal file system Linux, mentre omettendola si risolve il percorso su HDFS.
  • ๐ŸŽฏ Dove si adatta: Hive รจ piรน adatto al data warehousing in batch e all'ETL semi-strutturato piuttosto che alla ricerca di record a bassa latenza.

ETL in Hive: caricamento di dati JSON, XML e di testo

Hive come strumento ETL e di data warehousing in aggiunta al Hadoop L'ecosistema fornisce funzionalitร  come la modellazione dei dati, la manipolazione dei dati, l'elaborazione dei dati e l'interrogazione dei dati. Espressione dei datitracIn Hive, la creazione di tabelle si riferisce alla creazione di tabelle in Hive e al caricamento di dati strutturati e semi-strutturati, nonchรฉ all'esecuzione di query sui dati in base ai requisiti.

Per l'elaborazione batch, scriveremo script definiti su misura utilizzando script map e reduce personalizzati in un linguaggio di scripting. Fornisce un SQL come ambiente e supporto per query facili.

Lavorare con dati strutturati utilizzando Hive

I dati strutturati significano che i dati sono nel formato corretto di righe e colonne. Questo รจ piรน simile a RDBMS dati con righe e colonne appropriate.

Qui andremo a caricare i dati strutturati presenti nei file di testo in Hive.

Passo 1) In questo passaggio stiamo creando la tabella "employees_guru" con nomi di colonne come ID, Nome, Etร , Indirizzo, Stipendio e Dipartimento dei dipendenti con tipi di dati.

Creazione della tabella employees_guru e caricamento del file Employees.txt in Hive

Dallo screenshot qui sopra, possiamo osservare quanto segue:

  1. Creazione della tabella โ€œemployees_guruโ€
  2. Caricamento dei dati dal file Employees.txt nella tabella "employees_guru"

Passo 2) In questa fase visualizziamo il contenuto memorizzato nella tabella utilizzando il comando "Select". Possiamo osservare il contenuto della tabella nella seguente schermata.

Seleziona l'output della query che mostra le righe della tabella Hive employees_guru

Esempio di frammento di codice

Domande da eseguire

1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING)
> Row format delimited
> Fields terminated by ',';
2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru;
3) select * from employees_guru;

Lavorare con dati semistrutturati utilizzando Hive (XML, JSON)

Hive esegue funzionalitร  ETL nell'ecosistema Hadoop agendo come un Strumento ETLL'implementazione di MapReduce puรฒ risultare complessa in alcuni tipi di applicazioni; Hive รจ in grado di ridurre tale complessitร  e offre la soluzione ideale per le applicazioni IT nel settore del data warehousing.

I dati semistrutturati come XML e JSON possono essere elaborati con minore complessitร  utilizzando Hive. Per prima cosa vedremo come possiamo usare Hive per XML.

Da XML a tabella Hive

In questo, caricheremo i dati XML nelle tabelle Hive e recupereremo i valori memorizzati all'interno dei tag XML.

Passo 1) Creazione della tabella "xmlsample_guru" con una colonna str di tipo stringa.

Creazione della tabella xmlsample_guru e caricamento del file test.xml in Hive

Dallo screenshot qui sopra, possiamo osservare quanto segue:

  1. Creazione della tabella โ€œxmlsample_guruโ€
  2. Caricamento dei dati dal file test.xml nella tabella "xmlsample_guru"

Passo 2) Usando il XPath Utilizzando il metodo xpath(), saremo in grado di recuperare i dati memorizzati all'interno dei tag XML.

Query xpath() che restituisce i valori ename ed esal dalla colonna XML

Dallo screenshot qui sopra, possiamo osservare quanto segue:

  1. Utilizzando il metodo xpath() recuperiamo i valori memorizzati in /emp/esal/ e /emp/ename/
  2. Valori presenti all'interno dei tag XML. In questa fase, visualizziamo i valori effettivi memorizzati all'interno dei tag XML nella tabella "xmlsample_guru".

Si noti che xpath() restituisce un array di stringhe; xpath_string(), xpath_int() e xpath_double() restituiscono un singolo valore tipizzato.

Passo 3) In questo passaggio, recupereremo e visualizzeremo il codice XML grezzo della tabella "xmlsample_guru".

Documenti XML non elaborati memorizzati nella colonna str di xmlsample_guru

Dallo screenshot qui sopra, possiamo osservare quanto segue:

  • I dati XML effettivi vengono visualizzati con i tag
  • Se osserviamo un singolo tag, notiamo che "emp" รจ il tag padre e "ename" e "esal" sono i tag figli.

Code frammento:

Domande da eseguire

1) create table xmlsample_guru(str string);                                                                                                   2) load data local inpath '/home/hduser/test.xml' overwrite  into table xmlsample_guru;
3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;

JSON (JavaNotazione dell'oggetto script)

I dati provenienti dai social media e dai siti web vengono comunemente archiviati in formato JSON. Ogni volta che si tenta di recuperare dati da server online, vengono restituiti file JSON. Utilizzando Hive come archivio dati, รจ possibile caricare dati JSON nelle tabelle di Hive creando degli schemi.

Da JSON a tabella Hive

In questo procedimento, caricheremo dati JSON nelle tabelle Hive e recupereremo i valori memorizzati nello schema JSON.

Passo 1) In questa fase, creeremo una tabella JSON denominata "json_guru". Una volta creata, caricheremo e visualizzeremo il contenuto dello schema effettivo.

Creazione di json_guru, caricamento di test.json e visualizzazione dello schema JSON

Dallo screenshot qui sopra, possiamo osservare quanto segue:

  1. Creazione della tabella โ€œjson_guruโ€
  2. Caricamento dei dati da test.json nella tabella "json_guru"
  3. Visualizzazione dello schema effettivo del file JSON memorizzato nella tabella json_guru

Passo 2) Utilizzando il metodo get_json_object() possiamo recuperare i valori dei dati memorizzati nella gerarchia JSON.

L'output di get_json_object() elenca ecode, ename e salary da json_guru

Dallo screenshot qui sopra, possiamo osservare quanto segue:

  1. Utilizzando get_json_object(str,'$.ecode') รจ possibile recuperare i valori ecode dalla tabella json_guru. Allo stesso modo, utilizzando get_json_object(str,'$.ename') e get_json_object(str,'$.sal') verranno recuperati i valori ename e sal dalla tabella json_guru.
  2. Valori memorizzati all'interno della gerarchia JSON in json_guru

Poichรฉ get_json_object() analizza il documento una sola volta per chiamata, json_tuple() รจ piรน efficiente quando sono necessarie diverse chiavi e un JSON SerDe mappa il documento su colonne tipizzate al momento del caricamento.

Code frammento

Domande da eseguire

1) create table json_guru(str string);
2) load data inpath 'home/hduser/test.json' into table json_guru;
3) select * from json_guru;
4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;

Conversione complessa da JSON a tabella Hive

In questo tutorial, caricheremo dati JSON complessi nelle tabelle Hive e recupereremo i valori memorizzati nello schema JSON.

Passo 1) Creazione di complexjson_guru con un campo a colonna singola.

Creazione di complexjson_guru e caricamento di emp.json nella tabella Hive

Dallo screenshot qui sopra, possiamo osservare quanto segue:

  1. Creazione della tabella complexjson_guru con un singolo campo di colonna di tipo stringa
  2. Caricamento dei dati in complexjson_guru dal file JSON complesso emp.json

Passo 2) Tramite la funzione get_json_object possiamo recuperare il contenuto effettivo memorizzato all'interno della gerarchia del file JSON.

Dalla seguente schermata, possiamo vedere l'output dei dati memorizzati in complexjson_guru.

Extraccodifica ted e valori chiave annidati dal documento JSON complesso

Passo 3) In questa fase, utilizzando il comando "Select", possiamo visualizzare i dati JSON complessi memorizzati nella tabella "complexjson_guru".

Seleziona l'output che mostra le righe JSON complesse non elaborate in complexjson_guru

Esempio di frammento di codice

Domande da eseguire

1) create table complexjson_guru(json string);
2) load data inpath 'home/hduser/emp.json' into table complexjson_guru;
3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru;
4) select * from complexjson_guru;

Hive nei progetti in tempo reale: quando e dove utilizzarlo

Quando e dove utilizzare Hive nell'ecosistema Hadoop:

Quando

  • Quando si lavora con funzioni statistiche forti e potenti nell'ecosistema Hadoop
  • Quando si lavora con l'elaborazione di dati strutturati e semi-strutturati
  • Come strumento di data warehouse con Hadoop
  • Ingestione di dati in tempo reale con HBase, dove รจ possibile utilizzare Hive

Dove

  • Per la sua facilitร  d'uso come strumento ETL e di data warehousing.
  • Fornire un ambiente di tipo SQL ed eseguire query simili a SQL utilizzando HiveQL
  • Utilizzare e distribuire script di mappatura e riduzione personalizzati in base alle esigenze specifiche del cliente.

DOMANDE FREQUENTI

L'opzione LOCAL copia il file dal file system del computer client. Senza LOCAL, Hive considera il percorso come HDFS e sposta il file, quindi un percorso relativo viene risolto nella directory home HDFS dell'utente.

`json_tuple()` รจ generalmente piรน veloce: analizza il documento una sola volta e restituisce piรน chiavi insieme, mentre `get_json_object()` rianalizza la stringa per ogni campo. Utilizza `get_json_object()` per un singolo valore.

No. Una singola colonna STRING piรน le funzioni JSON funzionano. Un SerDe come org.apache.hive.hcatalog.data.JsonSerDe รจ adatto a query di produzione ripetute, mappaping Le chiavi vengono inserite nelle colonne tipizzate una sola volta, anzichรฉ a ogni lettura.

Solitamente si tratta di un file formattato in modo leggibile: Hive si aspetta un documento JSON completo per riga, quindi un documento diviso su piรน righe diventa righe non valide. Una chiave scritta in modo errato o una distinzione tra maiuscole e minuscole in JSONPath ha lo stesso effetto.

La funzione xpath() restituisce sempre un array di stringhe. Utilizza invece una variante tipizzata: xpath_string(), xpath_int(), xpath_long(), xpath_float(), xpath_double() o xpath_boolean(). Ognuna di esse restituisce un valore scalare di quel tipo.

L'esterno รจ piรน sicuro per i dati di atterraggio grezzi, perchรฉ la cadutaping La tabella lascia i file al loro posto. Una tabella gestita elimina la sua directory dati al momento del DROP: comodo per le tabelle temporanee, ma distruttivo per i file condivisi.

Gli strumenti di apprendimento automatico analizzano i file campione per dedurre i tipi, segnalare le chiavi sparse e proporre colonne di partizione in base ai modelli di query. Considerate l'output come una bozza: i tipi e le partizioni devono ancora essere verificati rispetto ai volumi reali.

Questo strumento genera istruzioni CREATE TABLE, comandi LOAD DATA ed espressioni JSONPath a partire da un record di esempio incollato nell'editor. Non potendo visualizzare il cluster, รจ necessario verificare preventivamente nomi, percorsi e ortografia delle chiavi.

Riassumi questo post con: