S3上有一个17.7GB的文件。它是作为Hive查询的输出生成的,并未压缩。S3上的压缩文件
我知道,通过压缩它,它将是大约2.2GB(gzip)。当传输是瓶颈(250kB/s)时,如何尽可能快地在本地下载此文件。
我还没有找到任何直接的方法来压缩S3上的文件,或者在s3cmd,boto或相关工具中启用压缩传输。
S3上有一个17.7GB的文件。它是作为Hive查询的输出生成的,并未压缩。S3上的压缩文件
我知道,通过压缩它,它将是大约2.2GB(gzip)。当传输是瓶颈(250kB/s)时,如何尽可能快地在本地下载此文件。
我还没有找到任何直接的方法来压缩S3上的文件,或者在s3cmd,boto或相关工具中启用压缩传输。
S3不支持流压缩,也不可能远程压缩上传的文件。
如果这是一次性过程,我建议将它下载到同一地区的EC2机器上,在那里压缩,然后上传到您的目的地。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html
如果您需要这更频繁
Serving gzipped CSS and JavaScript from Amazon CloudFront via S3
晚的答案,但我发现这个工作非常完美。
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标志之前验证数据。
您是否有能力通过重新运行您的Hive查询重新生成此文件?如果是,我会建议为您的Hive查询启用输出压缩。 –
@CharlesMenguy:我实际上是第一次这么做(我认为)。然而在陈述中有一个'order by',这影响了输出。通常情况下,我会为每个地图作业获取一个文件,但是我从缩减中获得了一个文件,我假定这是在排序完成的位置。 –
您是如何在查询中启用输出压缩的?我认为你应该能够压缩几乎任何Hive查询的输出,而不管是否有'order by'命令。我假设你通过执行'insert overwrite directory's3n:// ...''来写入S3,对吧? –