[英]zcat on amazon s3
我想知道是否可以对存储在亚马逊 s3 上的 gzip 文件进行分类。 也许使用一些流媒体客户端。 你怎么认为?
我们正在寻找类似于zcat s3://bucket_name/your_file | grep "log_id"
zcat s3://bucket_name/your_file | grep "log_id"
要使用 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 Kay的Perl aws 脚本。 请注意,您不必将 Tim Kay 的脚本放在您的路径上或以其他方式安装它(除了使其可执行),只要您使用以aws
开头的命令版本,例如。
$ ./aws cat BUCKET/OBJECT | zcat | grep "log_id"
您还可以使用 s3cat,这是 Tim Kay 的 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 之后似乎有一些尾随字节,但zcat
和bzcat
只是方便地向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.