如何在存储在S3中的文件中使用grep命令进行搜索。
文章标题:如何在S3存储的文件中使用grep命令
在AWS中,您还可以使用GLUE / Athena组合直接执行。根据数据量的大小,查询的成本可能会很昂贵并且需要时间。
基本上,您需要按照以下步骤操作:
1. 创建一个GLUE分类器,以按行读取文件。
2. 创建一个爬虫,针对S3数据目录的数据库(csvdumpdb)进行爬取 - 它将创建一个包含所有csv文件中所有行的表。
3. 使用Athena进行查询,例如:
select "$path",line fromwhere line like '%some%fancy%string%'
您将获得类似以下结果:
$path line s3://mybucket/mydir/my.csv "some I did find some,yes, "fancy, yes, string"
这样可以避免运行外部基础设施。
这种方法非常有效。谢谢!在我的工作中,将生产数据从S3下载到我的计算机是不可选的。这是一个很简单的解决办法。
感谢您的评论。
从S3存储桶中的文件中进行grep操作是一个常见的需求。下面是一种在本地执行的方法:
aws s3 ls --recursive s3:/// / | awk '{print $4}' | xargs -I FNAME sh -c "echo FNAME; aws s3 cp s3:// /FNAME - | grep --color=always ' '"
这个命令的作用是首先使用`aws s3 ls`命令列出指定路径下的所有文件,然后使用`awk`命令提取文件名,并且对于每个文件,使用`xargs`命令下载文件并进行grep操作。
然而,如果需要从S3下载大量的数据,不建议使用这种方法,因为会产生大量的网络传输费用。如果您在一个具有S3 VPC端点的VPC中的某个EC2实例上运行该命令,可以避免互联网传输费用。
所以,解决这个问题的方法是在具有S3 VPC端点的VPC中的EC2实例上运行上述命令。这样可以将数据传输的费用降到最低。