2013-01-24 130 views
13

S3上有一个17.7GB的文件。它是作为Hive查询的输出生成的,并未压缩。S3上的压缩文件

我知道,通过压缩它,它将是大约2.2GB(gzip)。当传输是瓶颈(250kB/s)时,如何尽可能快地在本地下载此文件。

我还没有找到任何直接的方法来压缩S3上的文件,或者在s3cmd,boto或相关工具中启用压缩传输。

+1

您是否有能力通过重新运行您的Hive查询重新生成此文件?如果是,我会建议为您的Hive查询启用输出压缩。 –

+0

@CharlesMenguy:我实际上是第一次这么做(我认为)。然而在陈述中有一个'order by',这影响了输出。通常情况下,我会为每个地图作业获取一个文件,但是我从缩减中获得了一个文件,我假定这是在排序完成的位置。 –

+0

您是如何在查询中启用输出压缩的?我认为你应该能够压缩几乎任何Hive查询的输出,而不管是否有'order by'命令。我假设你通过执行'insert overwrite directory's3n:// ...''来写入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 

这会将s3桶中的所有文件下载到机器(或ec2实例)中,压缩映像文件并将其上传回s3存储桶。 在删除dryrun标志之前验证数据。