2013-01-24 25 views
13

Ho un file 17.7 GB su S3. È stato generato come output di una query Hive e non è compresso.Comprime file su S3

So che comprimendolo, sarà circa 2,2 GB (gzip). Come posso scaricare questo file localmente il più rapidamente possibile quando il collo di bottiglia è il trasferimento (250kB/s).

Non ho trovato alcun modo diretto per comprimere il file su S3 o abilitare la compressione durante il trasferimento in s3cmd, boto o strumenti correlati.

+1

Hai la capacità di rigenerare questo file rieseguendo la tua query Hive? Se sì, consiglierei di abilitare la compressione dell'output per la tua query Hive. –

+0

@CharlesMenguy: In realtà l'ho fatto la prima volta (credo). Tuttavia, c'era un 'order by' nell'istruzione, che influiva sull'output. Normalmente otterrei un file per ogni lavoro sulla mappa, ma invece ho ottenuto un singolo file dalla riduzione che presumo sia dove è stato effettuato l'ordine. –

+0

Come hai abilitato la compressione dell'output nella tua query? Penso che dovresti essere in grado di comprimere l'output di quasi tutte le query Hive indipendentemente dal fatto che esista o meno un ordine. Presumo che tu stia scrivendo a S3 facendo un 'insert overwrite directory 's3n: // ...'', giusto? –

risposta

1

risposta in ritardo, ma ho trovato questo perfettamente funzionante.

aws s3 sync s3://your-pics . 

for i in `find | grep -E "\.jpg$|\.jpg$"`; do gzip "$i" ; echo $i; done 

aws s3 sync . s3://your-pics --content-encoding gzip --dryrun 

Questo scaricherà tutti i file nel secchio s3 alla macchina (o istanza EC2), comprime i file di immagini e caricarle di nuovo al secchio S3. Verificare i dati prima di rimuovere il flag Dryrun.