【问题标题】:Athena vs Redshift Spectrum雅典娜 vs Redshift Spectrum
【发布时间】:2018-10-19 09:06:29
【问题描述】:

我正在评估 Athena 和 Redshift Spectrum。两者都有相同的目的,Spectrum 需要一个 Redshift 集群,而 Athena 是纯无服务器的。 Athena 使用 Presto,Spectrum 使用 Redshift 的引擎

Athena 或 Redshift 光谱有什么特定的缺点吗? 使用 Athena 或 Spectrum 有什么限制吗?

【问题讨论】:

标签: amazon-web-services amazon-redshift amazon-athena amazon-redshift-spectrum


【解决方案1】:

我在几个不同的用例中都使用过这两种方法并得出结论:

Redshift Spectrum 的优势:

  • 允许创建 Redshift 表
  • 能够将 Redshift 表与 Redshift 谱表连接起来 高效

如果你不需要这些东西,那么你也应该考虑雅典娜

Athena 与 Redshift 光谱的差异:

  • 计费。这是主要区别,具体取决于您的用例 您可能会发现一个比另一个便宜得多
  • 性能。我发现 Athena 稍微快一些。
  • SQL 语法和功能。 Athena 源自 presto,有点 与起源于 postgres 的 Redshift 不同。
  • 连接性。使用 API、JDBC 或 ODBC,但更多产品提供“开箱即用的标准” 连接到 Redshift

此外,对于任一解决方案,请确保您使用 AWS Glue 元数据,而不是 Athena,因为限制较少。

【讨论】:

  • 非常感谢 Jon Scott 先生,
  • 你好,所以雅典娜的成本低于频谱?使用红移光谱也会增加现有红移使用的负载
  • 在这篇文章发布后的 2 年里,红移频谱查询规划有了一些改进,但总的来说,这些发现仍然适用。单独的 Redshift 频谱不会使用太多的 Redshift 资源,因为它只是规划查询并将其推送到 Athena。
  • @JonScott 请您扩展您的断言,即 Redshift 频谱“只是在计划查询并将其推送到 Athena”?我没有相反的第一手证据,但这似乎至少有点令人惊讶
  • 这肯定不会以有意义的方式使用您的 redshift 集群。但是,您可能是正确的,因为它在某种程度上与雅典娜分开。我所做的测试似乎显示了 athena 和 redshift 的紧密对齐,但是我在 AWS 上找不到任何文档来证明这一点。自从我发布上述答案以来,雅典娜越来越受到查询排队的困扰,我还没有看到在 Redshift 频谱中发生同样的情况。
【解决方案2】:

这个问题已经提出了很长一段时间,但我仍然认为我可以为讨论做出一些贡献。

什么是雅典娜?

Amazon Athena 是一种交互式查询服务,可以使用标准 SQL 轻松分析 Amazon S3 中的数据。 Athena 是无服务器的,因此无需管理基础架构,您只需为运行的查询付费。 (来自文档)

很简单,对吧?

接下来的问题是什么是 Redshift Spectrum,以及为什么在 Athena 几乎是外部表查询的解决方案时,亚马逊人会做到这一点?

因此,AWS 人员想要创建 Redshift 的扩展(目前作为托管列式数据存储非常流行),并使其能够与外部表(通常是 S3)对话。但他们希望让 Redshift 用户(主要是分析人员)的生活更轻松。许多分析工具目前不支持 Athena,但支持 Redshift。但是创建 Reshift 集群和存储数据是一个瓶颈。同样,Redshift 的水平可扩展性并不高,并且在添加新机器时需要一些停机时间。如果您是 Redshift 用户,那么让您的存储更便宜基本上会让您的生活变得更轻松。

我建议你在以下情况下使用红移光谱:

  • 您是现有的 Redshift 用户,并且希望在 Redshift 中存储更多数据。

  • 您希望将较冷的数据移动到外部表中,但在某些情况下仍希望加入 Redshift 表。

  • Spark 卸载数据,如果您只想将数据导入 Pandas 或任何其他工具进行分析。

Athena 在以下情况下很有用:

  • 您是新用户并且没有 Redshift 集群。访问 Spectrum 需要一个活动的、正在运行的 Redshift 实例。因此,如果没有 Redshift,Redshift Spectrum 就不是一个选择。
  • 由于 Spectrum 仍然是一个开发工具,他们正在添加一些功能,例如事务,以提高效率。
  • 顺便说一句,Athena 附带了一个不错的 REST API,所以你想要它就去吧。

总而言之,Redshift + Redshift Spectrum 确实很强大,有很多承诺。但距离成熟还有很长的路要走。

【讨论】:

  • 您好,我有一个问题,哪种方法具有成本效益:使用 athena 连接 s3 表和 redshift 表(使用胶水爬虫)或使用 redshift 频谱连接 redshift 表和 s3 外部表?使用红移光谱是否会增加现有红移使用的负载
【解决方案3】:

如果您使用的是 Redshift 数据库,那么明智的做法是使用 Spectrum 和 redshift 来获得所需的性能。

但是,如果您开始探索选项,那么我们可以考虑将 Athena 作为继续前进的工具。

【讨论】:

  • 频谱和雅典娜的数据扫描费用相同。即使我使用 Redshift,我为什么要使用 Spectrum 并为 Redshift 集群增加更多负担。如果集群已经被用于报告,那么使用 Spectrum 将是一种过度杀伤力。相反,我可以利用 Athena 并将负载转移到 Athena。
  • Spectrum 是否使用红移集群?我认为它的类似架构可以虚拟添加更多服务器来辅助 redshift 集群。我们在这里唯一要做的就是创建外部表?不是吗?
  • @Ramakrishna 在 Redshift 集群和 S3 之间有一些额外的工作人员,如果您仔细设计查询,可能会在该级别进行一些下推谓词优化,但随后数据会被读入 Redshift集群,并且与现有的 Redshift 使用存在并发争用。您可以在explain 计划中看到它。理想的用例是当您拥有大量数据时 - 将其廉价存储在 s3 上 - 但不需要扩展您的计算。使用普通的旧 Redshift,存储与计算相关联,因此两者必须一起扩展。
【解决方案4】:

我从 Adrian Cantril/LA 的 2019 年 SA 专业课程中了解到,Redshift Spectrum 将使用自己的 Redshift 集群来提供比利用 AWS 为 Athena 查询提供的共享容量提供的更一致的性能。我很欣赏这些信息可能只对考试有用,我觉得他的论点没有说服力。

我之所以写这个答案,是因为我对领先答案对 Athena 的表现优于 Redshift Spectrum 的处理方式不满意。该答案的其余部分很好,我并不是要直接在此处复制其中的任何内容(没有引用它在我写这篇文章时没有向我注册)。

当我的大部分数据都在 S3 中时,我(同样,仅基于我的不干涉研究)会选择 Spectrum,这通常用于更大的数据集。不过,最近的 RA3 实例似乎与这个利基市场重叠。所以我说 Spectrum 最适合我们拥有长期 Redshift 集群的地方​​,这些集群是 OLAP 节点,有备用容量来查询 S3。

为什么您使用自己的资产来执行 Athena 在没有您投资的情况下会执行的查询?缓存,适合的地方。和一致的表现,如果我相信阿德里安坎特里尔而不是乔恩斯科特的话。这让我怀疑 RA3 可能正在淘汰 Spectrum。以及缺乏关于 Spectrum 的体面文献。为什么亚马逊在 Athena 中提供性能优于更昂贵的 Redshift Spectrum 的无服务器产品?这就是他们选择弃用 RRS 的方式。我不敢相信 Spectrum 已被弃用,因此必须提供此答案来对此提出异议。看看https://aws.amazon.com/redshift/whats-new/

我认为下面的图片(来自https://d1.awsstatic.com/events/Summits/AMER2020/May13SummitOnline/Modernize_your_data_warehouse.pdf)相当清楚地表明计算节点在这里具有影响力,这可能与上面@JonScott 的宝贵见解相反。

最后一个重大区别是 Athena 仅限于 IAM 进行身份验证,如此 reinvent 2018 (ANT201-R1) 幻灯片中所述:

【讨论】:

    【解决方案5】:

    一个很大的限制和不同的因素是使用结构化数据的能力。 Athena 支持 JSON 和 Parquet 文件格式,而 Redshift Spectrum 仅接受平面数据。

    另一个是 Athena 拥有的 GIS 功能以及 lambdas 的可用性,它们有时确实派上用场。

    现在,如果您运行一个独立的新 Postgres,那么它可以做任何事情甚至更多,但就 Redshift(和 Spectrum)之间的比较而言 - 它是一个已经停止发展的工具。

    【讨论】:

    • Spectrum 支持的格式:JSON、ION、Parquet、RCFile、SequenceFile、TextFile、ORC、Avro
    • 是的,它支持这些格式,但仅支持以这些格式编写的平面数据。您可以在 Parquet 中编写结构和数组,并可以使用 Athena 查询它,但不能通过 Spectrum。
    • 我认为在发布此内容时,LauriK 对上述某些内容提出了公平的观点。作为一名数据工程师,为了有效地存储数据,将数据嵌套在某些用例中非常重要。 Redshift Spectrum 现在支持嵌套数据,尽管 aws.amazon.com/about-aws/whats-new/2018/08/…
    • Spectrum 对嵌套数据仍有很多限制docs.aws.amazon.com/redshift/latest/dg/… 有效存储数据并不是嵌套数据的理想用例。常见的情况是查询原始 json 并将其展平为有用的东西,例如分区镶木地板或兽人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多