2012-08-16 4 views
8

Ho alcuni dati in HIVE, e mi piacerebbe vederli in LibreOffice.Esporta HIVE a un CSV

Come faccio a esportare questi dati e poi importarlo su Libreoffice

+1

Benvenuti al StackOverflow! Cosa hai provato fino ad ora e quali sono le diffferenze con il tuo attuale approccio? – Olaf

+0

Ho creato lo script perl: utilizzare Testo :: CSV; my $ csv = Testo :: CSV-> new() o die "Can not use CSV:" .Text :: CSV-> error_diag(); $ csv-> eol ("\ r \ n"); while (my $ line = readline) { chomp $ line; my @cols = split/\ x01 /, $ line; $ csv-> print (* STDOUT, \ @cols); } – user1356713

risposta

0

È possibile specificare e personalizzare il modo per memorizzare le tabelle di meccanismo Hive SerDe. Grazie a utente ogrodnek su GitHub, esiste l'implementazione CSV SerDe.

È una specie di obsoleto (hive 0.5) ma può essere facilmente adottato nella nuova versione di hive. Tutto quello che dovevo fare per il successo con esso - solo cambiando costruire config per la mia distribuzione alveare e la versione (ho usato pom.xml per Maven in kunkunur 's richiesta di pull) e l'aggiunta di queste righe in CSVSerde.java per soddisfare nuova API:

import org.apache.hadoop.hive.serde2.SerDeStats; 
.... 
.... 
@Override 
public SerDeStats getSerDeStats() { 
// no support for statistics 
return null; 
} 

Poi si può semplicemente eseguire hadoop dfs -get /table/or/partition/location /local/destination (o anche utilizzare un -cat con tubi o di output singolo file) per caricare i dati di Hadoop - sarà già in formato CSV.

21

Sulla base https://issues.apache.org/jira/browse/HIVE-1603:

$ hive 
hive> set hive.exec.compress.output=false; 
hive> create table csv_dump ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' as 
hive> select ...YOUR_SELECT_QUERY_HERE...; 
$ hadoop dfs -cat /user/hive/warehouse/csv_dump/* > ~/csv_dump.csv 
+1

L'ultimo comando è deprecato ora. Il nuovo comando equivalente è quasi lo stesso - "hadoop fs -cat/user/hive/warehouse/csv_dump/*> ~/csv_dump.csv".Il takeaway fondamentale è che hadoop map hive tables to fs namespace/user/hive/warehouse. – sandeepkunkunuru

1

ho avuto un problema simile e questo è come sono stato in grado di affrontarlo.

Fase 1 - caricato i dati dalla tabella alveare in un'altra tabella come segue

DROP TABLE IF EXISTS TestHiveTableCSV; CREATE TABLE TestHiveTableCSV ROW FORMATO DELIMITATO CAMPI TERMINATO DA "," LINEE TERMINATE DA "\ n 'AS SELEZIONA Elenco colonne FROM TestHiveTable;

Fase 2 - Copiato il blob dal magazzino alveare nella nuova posizione con appropriata estensione

avvio AzureStorageBlobCopy -DestContext $destContext -SrcContainer "Source Container" -SrcBlob "hive/warehouse/TestHiveTableCSV/000000_0" -DestContainer "Destinazione Container" ` - DestBlob "CSV/TestHiveTable.csv"

Spero che questo aiuti!

migliori saluti, dattatreya Sindol (Datta) http://dattatreysindol.com