从AWS S3读取多个文件

12 浏览
0 Comments

从AWS S3读取多个文件

我需要一个系统来读取S3存储桶进行分析。该存储桶按年/月/日/小时进行拆分,其中每个小时文件夹下有许多压缩文件,总计超过2GB。这是否需要使用Python和boto3进行脚本编写?寻求任何一般指导。

0
0 Comments

在Amazon S3中,可以存储多个文件,并且可以使用Amazon Athena对这些文件进行类似SQL的查询。这样做的原因是可以更快速、更便宜地查询压缩的文件,因为只会按照从磁盘扫描的数据量收费。

然而,Amazon S3中的同一个文件夹(路径)下的所有文件必须具有相同的格式。例如,如果文件是以gzip格式的CSV文件,那么所有文件都必须按照相同顺序具有相同数量的列。

要在Amazon Athena中使用这些文件,首先需要使用CREATE TABLE语句定义数据文件中的列以及数据的位置。这是最困难的部分,因为必须正确定义格式。

然后,可以使用SQL的SELECT命令对数据进行查询,该命令将应用于指定文件夹中的所有文件。

如果未来需要添加或删除数据,只需更新文件夹的内容即可。SELECT命令总是在运行时查看文件夹中的文件。

根据您的要求“计算所有文件中customer_id的不同值并按item_id进行分组”,可以使用以下SQL查询语句:

SELECT

item_id,

COUNT(DISTINCT customer_id)

FROM table

GROUP BY 1

以上是关于从Amazon S3中读取多个文件的内容。如果需要更详细的信息,可以观看以下视频:youtu.be/fStDrddmi5Y

0