亚马逊s3上的zcat

时间:2011-10-11 16:48:26

标签: amazon-s3 amazon

我想知道是否可以捕获存储在amazon s3上的gzip文件。也许使用一些流媒体客户端。你觉得怎么样?

我们正在寻找类似于zcat s3://bucket_name/your_file | grep "log_id"

的操作

6 个答案:

答案 0 :(得分:7)

来自S3 REST API » Operations on Objects » GET Object

  

要使用GET,您必须具有对该对象的READ访问权限。如果您授予匿名用户READ访问权限,则可以不使用授权标头返回该对象。

如果是这种情况,您可以使用:

$ curl <url-of-your-object> | zcat | grep "log_id"

$ wget -O- <url-of-your-object> | zcat | grep "log_id"

但是,如果您尚未对该对象授予匿名READ访问权限,则需要在GET请求中创建并发送授权标头,这与curl有点单调乏味。 / wget。幸运的是,有人已经完成了,那就是Perl aws script by Tim Kay recommended by Hari。请注意,只要您使用以aws开头的命令版本,就不必将Tim Kay的脚本放在您的路径上或以其他方式安装它(除了使其可执行)。

$ ./aws cat BUCKET/OBJECT | zcat | grep "log_id"

答案 1 :(得分:6)

您还可以使用s3cat,它是Tim Kay的AWS命令行工具包的一部分:

http://timkay.com/aws/

要获得zcat FILENAME | grep "log_id"的等价物,您需要:

> s3cat BUCKET/OBJECT | zcat - | grep "log_id"

答案 2 :(得分:4)

不是exaclty一个zcat,但是使用hadoop从S3并行下载大文件的方法可能是http://hadoop.apache.org/common/docs/current/distcp.html

hadoop distcp s3:// YOUR_BUCKET / your_file / tmp / your_file

hadoop distcp s3:// YOUR_BUCKET / your_file hdfs:// master:8020 / your_file

也许从这一点开始你可以管道zcat ......

要添加凭据,您必须使用以下命令编辑core-site.xml文件:

<configuration>
<property>
  <name>fs.s3.awsAccessKeyId</name>
  <value>YOUR_KEY</value>
 </property>
 <property>
  <name>fs.s3.awsSecretAccessKey</name>
  <value>YOUR_KEY</value>
</property>
<property>
  <name>fs.s3n.awsAccessKeyId</name>
  <value>YOUR_KEY</value>
 </property>
 <property>
  <name>fs.s3n.awsSecretAccessKey</name>
  <value>YOUR_KEY</value>
</property>
</configuration>

答案 3 :(得分:4)

今天找到了这个帖子,并且喜欢Keith的回答。快进到今天,它完成了:

aws s3 cp s3://some-bucket/some-file.bz2 - | bzcat -c | mysql -uroot some_db

可能会在很短的时间内拯救别人。

答案 4 :(得分:2)

如果您的操作系统支持(可能),您可以使用/dev/fd/1作为aws s3 cp的目标:

aws s3 cp s3://bucket_name/your_file | zcat | grep log_id

EOF之后似乎有一些尾随字节,但zcatbzcat可以方便地向STDERR发出警告。

我刚刚确认这可以直接从S3加载一些数据库转储,如下所示:

aws s3 cp s3://some_bucket/some_file.sql.bz2 /dev/fd/1 | bzcat -c | mysql -uroot some_db

所有这一切只有您计算机上已有的东西和AWS CLI官方工具。取胜。

答案 5 :(得分:0)

您需要尝试使用s3streamcat,它支持bzip,gzip和xz压缩文件。

使用

安装

sudo pip install s3streamcat 使用

<强>用法:

s3streamcat s3://bucketname/dir/file_path
s3streamcat s3://bucketname/dir/file_path | more
s3streamcat s3://bucketname/dir/file_path | grep something