2013-01-24 18 views
13

私はS3に17.7GBのファイルを持っています。これはHiveクエリの出力として生成され、圧縮されていません。S3のファイルを圧縮

これを圧縮すると、約2.2GB(gzip)になります。転送がボトルネック(250kB/s)である場合、できるだけ早くローカルでこのファイルをダウンロードするにはどうすればよいですか?

私はS3でファイルを圧縮する簡単な方法が見つからず、s3cmd、boto、または関連ツールで転送時に圧縮を有効にしていません。

+1

Hiveクエリを再実行してこのファイルを再生成できますか?はいの場合は、Hiveクエリの出力圧縮を有効にすることをお勧めします。 –

+0

@CharlesMenguy:私は実際にこれを初めてやった(私は思う)。しかし、声明には「注文」があり、これがアウトプットに影響を与えた。通常、私は各マップジョブのファイルを取得しますが、代わりに、私が想定している縮小から1つのファイルを取得しました。 –

+0

クエリで出力圧縮をどのように有効にしましたか?私は、あなたが 'order by 'かどうかに関わらず、Hiveのほとんどのクエリの出力を圧縮することができるはずだと思います。私は、 's3n:// ... ''挿入上書きディレクトリを実行してS3に書いていると仮定します。 –

答えて

15

S3はストリーム圧縮をサポートしていないか、アップロードされたファイルをリモートで圧縮することはできません。

これは1回限りの処理ですが、同じ地域のEC2マシンにダウンロードして圧縮し、目的地にアップロードすることをおすすめします。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html

あなたはこのより頻繁に

Serving gzipped CSS and JavaScript from Amazon CloudFront via S3

1

後期の答えを必要とするが、私は、これは完全に働いた場合。

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 

これは、マシン(またはEC2インスタンス)のS3バケット内のすべてのファイル、画像ファイルを圧縮をダウンロードして、戻ってS3バケットにアップロードします。 ドライランフラグを削除する前に、データを確認してください。

関連する問題