2012-04-17 16 views

risposta

4

PigStorage riconoscerà che il file è compresso (dall'estensione .gz, questo è effettivamente implementato in TextInputFormat che PigTextInputFormat estende), ma dopo si avrà a che fare con un file tar. Se sei in grado di gestire le linee di intestazione tra i file nel tar, puoi semplicemente usare PigStorage così com'è, altrimenti dovrai scrivere la tua estensione di PigTextInputFormat per gestire l'eliminazione delle linee di intestazione tra ogni file

5

@ La risposta di ChrisWhite è tecnicamente corretta e dovresti accettare la sua risposta anziché la mia (IMO almeno).

È necessario allontanarsi dai file tar.gz con Hadoop. I file Gzip non sono divisibili, quindi ti trovi nella situazione in cui, se i tuoi file gzip sono grandi, vedrai l'hotspotting nei tuoi mappatori. Ad esempio, se si dispone di un file .tar.gz di 100 GB, non sarà possibile suddividere il calcolo.

Diciamo, d'altra parte, che sono piccoli. Nel qual caso, Pig farà un buon lavoro nel raccoglierli insieme e il problema della scissione andrà via. Questo ha il rovescio della medaglia del fatto che ora hai a che fare con tonnellate di piccoli file con il NameNode. Inoltre, poiché i file sono minuscoli, dovrebbe essere relativamente economico computazionalmente per riformare i file in un formato più ragionevole.

Quindi in quale formato è necessario riformulare i file? Buona domanda!

  • Basta tutto concatenare in un unico file compresso sequenza di grandi dimensioni a livello di blocco potrebbe essere il più impegnativo, ma il più gratificante in termini di prestazioni.
  • L'altro è semplicemente ignorare la compressione interamente e solo esplodere quei file, o almeno concatenare loro (si notano risultati di prestazioni senza compressione).
  • Infine, è possibile eseguire il blob dei file in blocchi da ~ 100 MB e quindi eseguirne il gzip.

Penso che sarebbe del tutto ragionevole scrivere una sorta di caricatore di tarball nel porcellino salvadanaio, ma personalmente preferirei semplicemente distribuire i dati in modo diverso.

Problemi correlati