在boto3,athena和aws命令行utils之间从s3提取数据的有效方法是什么

时间:2018-11-26 17:27:42

标签: amazon-web-services amazon-s3

有人可以让我知道从s3提取数据的有效方法是什么。基本上,我想提取给定时间范围内的数据,并对数据(JSON)应用一些过滤器,并将其存储在数据库中。我是AWS的新手,经过一点研究发现,我可以通过boto3 api,athena查询和aws CLI来完成此操作。但是我需要一些建议。

2 个答案:

答案 0 :(得分:1)

如果您正在寻找最简单,最直接的解决方案,我建议您使用aws cli。非常适合运行命令从命令行或Shell脚本下载文件,列出存储桶等。

如果您正在寻找一种更健壮的解决方案并与您的应用程序集成,那么各种AWS SDKs都可以。与在应用程序中运行Shell命令相比,SDK具有更多的功能丰富的IMO,并且更加干净。

如果要提取数据的应用程序是用python编写的,那么我绝对推荐boto3。确保阅读boto3 client vs resource之间的区别。

答案 1 :(得分:1)

一些选项:

  • 下载并处理::启动一个临时EC2实例,让脚本下载感兴趣的文件(例如,一天的文件?),并使用Python程序处理数据。这使您可以完全控制正在发生的事情。
  • Amazon S3 Select:这是一种从CSV文件提取数据的简单方法,但是一次只能处理一个文件。
  • Amazon Athena::提供一个SQL界面,以使用Presto查询多个文件。无服务器,速度快。根据从磁盘读取的数据量收费(因此,压缩数据更便宜)。
  • Amazon EMR: Hadoop服务,可非常高效地处理大量数据。高度可配置,但对于新用户而言相当复杂。

根据您的描述(10个文件,300MB,20万条记录),我建议从 Amazon Athena 开始,因为它提供了跨许多数据文件的友好SQL接口。首先在一个文件上运行查询(这使测试速度更快),然后在获得所需结果后,在所有数据文件上运行查询。