如何在存储在S3中的文件中使用grep命令进行搜索。

11 浏览
0 Comments

如何在存储在S3中的文件中使用grep命令进行搜索。

有人知道如何直接在S3桶中使用aws S3对文件执行grep操作吗?

例如,我有FILE1.csv、FILE2.csv等含有许多行的文件,想要查找包含字符串JZZ的行。

aws s3 ls --recursive s3://mybucket/loaded/*.csv.gz | grep ‘JZZ’

0
0 Comments

如何在S3中的文件中使用grep命令

有人问道,使用aws s3 cp命令可以将输出发送到stdout,那么是否会产生下载整个文件的数据传输费用呢?回答是,数据传输费用仅适用于将数据从AWS发送到Internet。如果该命令在与Amazon S3存储桶位于同一区域的Amazon EC2实例上运行,则不会产生数据传输费用。

接着有人问道,如果要在S3中的10TB压缩文件上使用grep命令,是否只需在EC2实例上解压缩并执行grep命令?是否使用Lambda函数并将其作为S3批量操作运行有什么优势?

对此,建议提出一个新的问题,并在新问题中提供详细信息。请勿通过对旧问题的评论提问。

0
0 Comments

文章标题:如何在S3存储的文件中使用grep命令

在AWS中,您还可以使用GLUE / Athena组合直接执行。根据数据量的大小,查询的成本可能会很昂贵并且需要时间。

基本上,您需要按照以下步骤操作:

1. 创建一个GLUE分类器,以按行读取文件。

2. 创建一个爬虫,针对S3数据目录的数据库(csvdumpdb)进行爬取 - 它将创建一个包含所有csv文件中所有行的表。

3. 使用Athena进行查询,例如:

select "$path",line from  where line like '%some%fancy%string%'

您将获得类似以下结果:

$path                       line
s3://mybucket/mydir/my.csv  "some I did find some,yes, "fancy, yes, string"

这样可以避免运行外部基础设施。

这种方法非常有效。谢谢!在我的工作中,将生产数据从S3下载到我的计算机是不可选的。这是一个很简单的解决办法。

感谢您的评论。

0
0 Comments

从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实例上运行上述命令。这样可以将数据传输的费用降到最低。

0