在python中使用s3 select解析多个镶木地板文件?

Posted

技术标签:

【中文标题】在python中使用s3 select解析多个镶木地板文件?【英文标题】:parse multiple parquet files with s3 select in python? 【发布时间】:2019-10-16 11:37:45 【问题描述】:

我正在尝试使用 boto3 从单个 S3 存储桶子文件夹中读取多个 parquet 文件。

我使用 python 读取单个 csv 文件没有问题,但我之前无法让它处理多个文件读取。

我之前看到过 aws 不支持的答案。不过据我了解,这个功能已经在 2018 年底实现了。

那么,有没有办法使用我的工作代码(如下所示)为相关文件夹中的所有 parquet 文件运行 s3 select 语句,即从所有文件中选择所有行?

存储桶中工作子文件夹中的文件:

_success
file1.snapy.parquet
file2.snapy.parquet

python 代码:

response = s3.select_object_content(
            Bucket='somebucket',
            Key= 'pathtosubfolder',
            ExpressionType='SQL', <br>
            InputSerialization = 'Parquet': ,
            Expression="select * from s3object s ",
            OutputSerialization = 'CSV': ,
            )

我期待 sql 语句的结果,但是我得到了:

[ERROR] NoSuchKey: An error occurred (NoSuchKey) when calling the SelectObjectContent operation: The specified key does not exist.

【问题讨论】:

【参考方案1】:

如果您想在 S3 中查询 parquet 格式对象的集合,您可能想看看 Amazon Athena。

Athena 完全托管 Facebook Presto 服务。

【讨论】:

以上是关于在python中使用s3 select解析多个镶木地板文件?的主要内容,如果未能解决你的问题,请参考以下文章

Python Select 解析

python select 解析

Python Select 解析

从AWS Lambda python函数将多个JSON文件合并到S3中的单个JSON文件

如何在 python 中使用 pyarrow 从 S3 读取分区镶木地板文件

如何在 python udf 中使用 select 查询进行 redshift?