从AWS S3读取多个文件

时间:2019-06-12 22:59:59

标签: python amazon-web-services amazon-s3 ftp

我需要一个系统来读取S3存储桶以进行分析。存储桶分为年/月/日/小时,其中每个小时文件夹包含许多压缩文件,总计超过2GB。

这是要使用boto3在Python中编写脚本的东西吗?寻找任何一般方向。

1 个答案:

答案 0 :(得分:1)

Amazon Athena可以对存储在Amazon S3中的多个文件运行类似SQL的查询

可以使用gzip 压缩文件。实际上,雅典娜将在压缩文件上运行得更快,更便宜,因为您只需为从磁盘扫描的数据量付费。

Amazon S3中给定文件夹(路径)中的所有文件必须采用相同的格式。例如,如果它们是gzip格式的CSV文件,则所有文件的列数必须相同且顺序相同。

然后,您可以在Amazon Athena中使用CREATE TABLE,它定义了数据文件中的列以及数据的位置。这是最困难的部分,因为您必须正确定义格式。

然后,您可以运行SQL SELECT命令来查询数据,这将应用于指定文件夹中的所有文件。

将来,如果您要添加或删除数据,只需更新文件夹的内容。 SELECT命令始终在运行该命令时查看该文件夹中的文件。

鉴于您的要求“计算一个customer_id的不同值并在所有文件中按item_id对它们进行分组”,就像这样:

SELECT
  item_id,
  COUNT(DISTINCT customer_id)
FROM table
GROUP BY 1