2016-03-21 11 views
8

Come si controlla il contenuto di un file Parquet dalla riga di comando?Ispezionare Parquet dalla riga di comando

L'unica possibilità che vedo ora è

$ hadoop fs -get my-path local-file 
$ parquet-tools head local-file | less 

Vorrei

  1. Evitare di creare la local-file e
  2. visualizzare il contenuto del file come json piuttosto che il testo senza tipo che parquet-tools stampe .

C'è un modo semplice?

risposta

3

Si consiglia di costruire e gestire il parquet-tools.jar per la distribuzione Hadoop.

Checkout progetto github: https://github.com/Parquet/parquet-mr/tree/master/parquet-tools

hadoop jar ./parquet-tools-<VERSION>.jar <command>.

+1

su Mac è possibile installa con homebrew: brew install parquet-tools – ronhash

+0

Ho caricato il JAR qui (non c'è bisogno di scherzare con le istruzioni di build buggy sulla pagina github dei progetti): http://www102.zippyshare.com/v/EGBKrDuq/f ile.html –

3

Per impostazione predefinita, gli strumenti per parquet cercano la directory del file locale, quindi per indicarlo su hdf, è necessario aggiungere hdfs: // all'inizio del percorso del file. Quindi nel tuo caso, puoi fare qualcosa del genere

parquet-tools head hdfs://localhost/<hdfs-path> | less 

Ho avuto lo stesso problema e ha funzionato bene per me. Non è necessario scaricare il file localmente per primo.

3

È possibile utilizzare parquet-tools con il comando cat e l'opzione --json per visualizzare i file senza una copia locale e nel formato JSON.

Ecco un esempio:

parquet-tools cat --json hdfs://localhost/tmp/save/part-r-00000-6a3ccfae-5eb9-4a88-8ce8-b11b2644d5de.gz.parquet 

Questo stampa i dati in formato JSON:

{"name":"gil","age":48,"city":"london"} 
{"name":"jane","age":30,"city":"new york"} 
{"name":"jordan","age":18,"city":"toronto"} 

Esonero di responsabilità: questo è stato testato in Cloudera CDH 5.12.0