【问题标题】:pick the s3 parquet files from a s3 bucket based on specific column filter condition根据特定列过滤条件从 s3 存储桶中选择 s3 parquet 文件
【发布时间】:2021-03-11 11:12:47
【问题描述】:

我需要根据特定的列过滤条件从 s3 存储桶中选择 s3 parquet 文件列表。

文件结构:s3:bucket/folder/file.parquet {文件夹内多个parquet文件}

文件包含 id、名称、地址、邮政编码、deptno、交易时间等信息。

deptno=1,2,3,4..etc(int)

transactiontime="2019-10-24T21:14:39.503Z", "2020-01-10T00:00:00.000Z".. 等(字符串)

现在我想根据条件 deptno,transactiontime 从存储桶中收集 parquet 文件列表(比如说 deptno=2,transactiontime="2019-10-24T21:14:39.503Z")

我们如何才能做到这一点并感谢任何建议。

【问题讨论】:

  • 通过 AWS Athena 运行查询是一个选项。您也可以使用 AWS 粘合爬虫在 Athena 中设置表。在此之后,您将能够针对表编写 SQL 并根据需要过滤列条件。 Athena 查询中的“$path”关键字将返回结果的文件名

标签: python apache-spark amazon-s3 pyspark parquet


【解决方案1】:

AWS Athena 是首选工具。您需要的是 Athena 中的 WHERE 子句。这个问题非常广泛,所以我无法提供任何具体的解决方案。这是一个article,应该可以回答您的问题。

第一步是使用 S3 设置 Athena。这个过程很好documented by AWS

如果您要查询的 Python 实现,那么 Boto3 Athena Client 就是您要查找的内容。准确来说,需要以下方法:

  • start_query_execution:运行 Query 中包含的 SQL 查询语句。
  • get_query_execution:如果您有权访问运行查询的工作组,则返回有关单次执行查询的信息。每次执行查询时,都会使用唯一 ID 保存有关查询执行的信息。
  • get_query_results:从 Amazon S3 中的 Athena 查询结果位置流式传输由 QueryExecutionId 指定的单个查询执行的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2018-05-16
    • 2021-09-29
    相关资源
    最近更新 更多