amazon-web-services - AWS Glue + Athena/Hive 是替代复杂 SQL 查询的正确选择吗?

标签 amazon-web-services amazon-athena presto aws-glue

我一直在使用 AWS Athena 跨多个表查询存储在 S3 上的分析数据。一段时间以来,我提出了 2-3 个复杂的 SQL 查询(涉及多个连接)来提取相关数据。因为,Athena 用于临时查询(而不是预定义查询),除了处理几个 TB 和 30 分钟超时的高昂成本外,我正在寻找替代方案。

我能想到的两种选择是:

  • 使用基于 Presto 的 EMR 集群并运行现有查询。它取消了 30 分钟的限制并(可能)降低成本(5 美元/TB)。但是,缺点是在连续运行中重新处理相同的数据。
  • 执行 ETL(例如通过 AWS Glue)并对数据进行非规范化。这应该减少重复连接,因为只处理增量数据。随后使用一些 SQL 接口(interface) - Athena/Hive 查询展平数据。但是,除了存储冗余(巨大)数据的成本之外,我不确定非规范化是否是一个好主意。

  • 其中哪一个是更好的选择,或者对于这个问题有更好的标准技术?

    最佳答案

    我认为最好先执行 2(非规范化),然后执行 1(在优化的数据布局上运行 Presto)。
    此外,具有基于成本的优化器的 Presto 可能值得一看:https://www.starburstdata.com/technical-blog/starburst-presto-on-aws-18x-faster-than-emr/

    关于amazon-web-services - AWS Glue + Athena/Hive 是替代复杂 SQL 查询的正确选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51670680/

    相关文章:

    sql - 在 SQL 中插入缺失值

    postgresql - 在 Kubernetes 集群中使用 pgAdmin 访问数据库

    amazon-athena - 如何在 Athena 中执行架构(数据库)重命名?

    amazon-web-services - AWS Glue - 是否使用爬网程序

    sql - 给定同类操作的历史记录,如何计算在单独的表中提供的特定时间点之前/之后的操作数量?

    amazon-web-services - 有没有办法在AWS SAM中导入am sql文件的内容?

    sql - 数据库表中多列的 Presto MD5 哈希

    sql - 从 Presto 中的行数组中提取

    amazon-web-services - 如何在 CloudFormation 中附加列表

    amazon-web-services - Amazon s3 存储桶的 https 安全异常