Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何grep到存储在S3中的文件中_Amazon S3_Grep - Fatal编程技术网

Amazon s3 如何grep到存储在S3中的文件中

Amazon s3 如何grep到存储在S3中的文件中,amazon-s3,grep,Amazon S3,Grep,有人知道如何使用aws S3直接在存储桶中对S3文件执行grep吗? 例如,我有很多行的FILE1.csv、FILE2.csv,并希望查找包含字符串JZZ的行 aws s3 ls --recursive s3://mybucket/loaded/*.csv.gz | grep ‘JZZ’ aws s3 cp命令可以将输出发送到stdout: aws s3 cp s3://mybucket/foo.csv - | grep 'JZZ' 破折号(-)向命令发送信号,以将输出发送到标准输出 请参阅

有人知道如何使用aws S3直接在存储桶中对S3文件执行grep吗? 例如,我有很多行的FILE1.csv、FILE2.csv,并希望查找包含字符串JZZ的行

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

aws s3 cp
命令可以将输出发送到
stdout

aws s3 cp s3://mybucket/foo.csv - | grep 'JZZ'
破折号(
-
)向命令发送信号,以将输出发送到标准输出


请参阅:

您还可以使用GLUE/Athena组合,它允许您直接在AWS中执行。 根据数据量的不同,查询的成本可能会很大,而且需要时间

基本上

  • 创建一个读取署名的粘合分类器
  • 针对数据库(csvdumpdb)创建一个到S3数据目录的爬虫程序-它将创建一个包含所有找到的CSV的所有行的表
  • 使用雅典娜进行查询,例如

    选择“$path”,其中的行类似于“%some%funcy%string%”

  • 然后得到类似于

    $path行

    s3://mybucket/mydir/my.csv“一些我确实找到了一些,是的,”花式,是的,字符串”


无需运行任何外部基础结构。

您可以使用以下命令在本地执行此操作:

aws s3 ls——递归s3:///|awk'{print$4}'| xargs-I FNAME sh-c“echo FNAME;aws s3 cp s3:///FNAME-| grep--color=始终为“””

说明: ls命令生成一个文件列表,然后我们从输出中选择文件名,对于每个文件(xargs命令),从S3下载文件并grep输出


如果您必须从S3下载大量数据(由于传输成本),我不推荐这种方法。如果您在VPC中的某个EC2实例上运行该命令,并且该实例上连接了S3 VPC端点,则可以避免internet传输的成本。

这很有魅力。谢谢!在我的世界中,从S3下载产品数据到我的计算机不是一个选项。这是一个简单的方法。谢谢您的评论@james