我需要一个系统来读取S3存储桶以进行分析。存储桶分为年/月/日/小时,其中每个小时文件夹包含许多压缩文件,总计超过2GB。
这是要使用boto3在Python中编写脚本的东西吗?寻找任何一般方向。
答案 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