AWS Athena:您需要知道的一切

已发表: 2022-05-02

AWS Athena 是一种灵活、经济高效的查询服务,用于存储在 AWS S3 中的数据。

AWS 是世界上最大的云提供商之一。 它为云存储和计算需求提供了多种服务。 AWS S3 是 AWS 平台上最受欢迎的服务之一。 它提供无与伦比的数据持久性和可用性,同时也是云中最便宜的存储选项之一。

鉴于其众多功能和理论上无限的存储空间,您可以在 S3 存储桶中拥有 TB 或 PB 的数据。 如果我们要打开每个文件并手动读取数 PB 的数据,分析这些数据几乎是不可能的。 这就是 AWS Athena 服务的用武之地。

简而言之,AWS Athena 用作数据分析服务,只需使用 SQL 查询访问 S3 存储桶中可用的数据。 因此,如果您甚至了解 SQL 的基础知识,您就可以开始使用 AWS Athena 分析 S3 数据。

让我们用一个简短的例子来理解这一点。 让我们假设您已将其中一个存储桶配置为您在组织中的多个账户中拥有的所有平衡器的访问日志存储桶。 您将如何查询多年的日志数据并从这些日志文件中获得重要的有意义的见解? 答案是 AWS Athena。

AWS 雅典娜的特点

  • 基于 SQL 的工具: AWS Athena 是一个非常简单易用的基于 SQL 的服务。 您只需将 Athena 指向您的存储桶之一,定义数据架构,然后开始使用存储桶中的 SQL 查询。
  • 无服务器:您不必维护运行 AWS Athena 的基础设施。 Athena 是无服务器的,并且经过优化,可以根据您的要求自动使用多个计算资源。
  • 快速且优化: Athena 已经过优化,可以使用有效数量的资源尽快交付您的查询结果。 它非常适合对 S3 数据进行小而复杂的分析。
  • 高性价比: Athena 是按使用付费的服务。 这意味着使用 AWS Athena 没有基本成本; 您只需为在 Athena 服务中运行的查询付费。
  • 数据的持久性和可用性:由于 Athena 依赖于 S3 存储桶中的数据,因此您可以放心,数据具有高可用性和持久性。
  • 支持: Athena 支持多种文件格式,例如 JSON、CSV、Avro、ORC 等。
  • 安全性: Athena 利用 IAM、存储桶策略和 ACL 等安全功能,使其高度安全。
  • Athena 后端: Athena 使用开源 Presto 作为后端。 Presto 是一个分布式 SQL 引擎,用于查询和分析大数据工作负载。

AWS Athena 的定价和优化

使用 AWS Athena 时,使用 AWS Athena 时,您需要为每 TB 扫描支付 5 美元的费用。 对于某些 AWS 区域,此价格可能略有不同。

  • 高效查询:如果您熟悉 SQL,则必须知道使用 SQL 从数据中获取某些结果的方法可能不止一种。 要优化 Athena,您可以使用运行查询所需时间更短的高效查询。
  • 数据转换:如果您想进一步优化查询,您可以将数据压缩、分区或转换为更小的数据集,从而进一步减少查询运行时间。 通过使用数据转换,您可以将查询优化多达 90%。
  • 连接虚拟表:连接表是 SQL 的一个非常重要的特性。 虽然这看起来像是一个简单的操作,但它可能是一个非常复杂的操作。 建议将较大的表放在左侧,将数据较少的表放在右侧。

AWS Athena 和 Redshift Spectrum 之间的区别

Redshift Spectrum 是另一项可用于在 AWS S3 存储桶上运行查询的服务。 Redshift Spectrum 和 Athena 都是无服务器的,可以在 S3 上运行复杂的查询,并且每处理一个 Terrabyte 数据的价格为 5%,那么有什么区别呢?

表现

AWS Athena 使用 AWS 提供的资源池中的计算资源。 相比之下,Redshift 频谱使用根据 Redshift 集群大小分配的资源。 这使您可以更好地控制 Redshift Spectrum 服务使用的资源,如果您想要提高性能,您可以随时增加 Redshift 集群的大小。

加载数据进行处理

这两种服务都使用虚拟表对您的数据运行 SQL 查询。 虚拟表是使用 Glue 数据目录制作的,用于模式管理。 Athena 可以直接使用 Glue 数据目录模式中的数据,而使用 Redshift Spectrum 时,您需要从 Glue 数据目录模式中配置外部表。

这些是两种服务之间的主要区别,因此在 Redshift 频谱和 Athena 之间进行选择时。 如果您想在 S3 中查询数据以及存储在 Redshift 数据仓库中的数据,或者如果您愿意支付更高的成本来提高您在 S3 中的查询性能,则应该使用 Redshift Spectrum。 当您的所有数据仅在 S3 存储桶中时,Athena 会很有用。

AWS Athena 和 S3 Select 之间的区别

S3 select 是 AWS 的另一项无服务器服务,用于使用 SQL 查询 S3 中的数据。 但是,S3 Select 和 Athena 之间的主要区别在于,您在使用 S3 Select 时只能使用 SQL SELECT 查询,而 Athena 可以用于各种 SQL 查询。 S3 select 的另一个限制是您一次只能对一个对象执行 SELECT 操作。

因此,如果您的要求只是从 S3 对象中提取数据或数据子集,则应使用 S3 Select。 对于像 JOIN 这样的复杂查询和操作,或者要处理整个 S3 存储桶中的数据,您应该使用 AWS Athena。

使用 AWS Athena 的优势

  • Athena 无需为您的数据开发复杂且昂贵的数据分析工具。
  • Athena 是无服务器的,这使它成为一个相当易于使用的服务。 您无需维护基础架构。
  • AWS 已优化 Athena,使其能够在您运行 Athena 查询的几秒钟内检索查询结果。
  • 由于 Athena 是无服务器的,因此您无需为 Athena 服务付费。 您只需为您选择运行的查询付费。 即使您要取消查询,您也只需为处理的数据而不是整个查询付费。
  • Athena 可以轻松地与其他 AWS 服务集成。 AWS Athena 最重要和最有价值的集成之一是与 AWS Glue 服务。 AWS Glue 是一种 ETL 服务,可用于将数据转换为更高效、更易读的形式,然后可以使用 AWS Athena 进行分析。
  • Athena 允许您同时运行多个查询。

AWS Athena 的限制

  • 行大小:虚拟 AWS Athena 表中的行大小不应超过32 兆字节。 在 CSV 和 JSON 文件非常有限的情况下,可以将此限制增加到最多 100 兆字节,但强烈建议将行大小限制为 32 兆字节以避免不必要的错误。
  • 隐藏文件:名称以下划线 (_) 或点 (.) 开头的文件被 Athena 服务视为隐藏文件。 这可以用作避免处理不需要的文件的功能。
  • Athena无法处理 S3 Glacier或 S3 Glacier Deep Archive 中的数据。 这些存储类仅用于数据归档选项,检索时间从几分钟到几小时不等,因此可以理解 AWS Athena 是否无法从这些类中检索数据。
  • Athena 不支持存储过程
  • Athena 版本 1不支持参数化查询。 这在 Athena 版本 2 中受支持。
  • 不支持 MERGE、UPDATE、CREATE TABLE LIKE、 DESCRIBE INPUTDESCRIBE OUTPUT等语句。

结论

在本文中,我们讨论了来自 AWS Athena 的数据分析工具,它的功能、优势和一些限制。 Athena 是用于处理和分析 S3 存储桶中数据的最强大工具之一。 甚至服务的限制也非常简单,如果需要可以解决。

您还可以查看一些保护 AWS S3 存储的最佳实践。