繁体   English   中英

亚马逊 s3 上的 zcat

[英]zcat on amazon s3

我想知道是否可以对存储在亚马逊 s3 上的 gzip 文件进行分类。 也许使用一些流媒体客户端。 你怎么认为?

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

S3 REST API » 对象操作 » GET 对象

要使用 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来说变得有些乏味。 幸运的是,有人已经这样做了,这就是Hari 推荐的Tim KayPerl aws 脚本 请注意,您不必将 Tim Kay 的脚本放在您的路径上或以其他方式安装它(除了使其可执行),只要您使用以aws开头的命令版本,例如。

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

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

http://timkay.com/aws/

获得相当于zcat FILENAME | grep "log_id" zcat FILENAME | grep "log_id" ,你会这样做:

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

今天找到了这个帖子,并且喜欢 Keith 的回答。 快进到今天的 aws cli,它是通过以下方式完成的:

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

可能会为别人节省一点时间。

不是 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>

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

aws s3 cp s3://bucket_name/your_file /dev/fd/1 | 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 工具之外,所有这些都没有。 赢。

您需要尝试使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM