AWS Athena:你需要了解的一切
AWS Athena是一种灵活、经济高效的查询服务,用于存储在AWS S3中的数据。
AWS是全球最大的云服务提供商之一。它提供了各种云存储和计算需求的服务。 AWS S3是最受欢迎的服务之一。它提供了无与伦比的数据耐用性和可用性,同时也是云中最便宜的存储选项之一。
鉴于其多种功能和理论上的无限存储空间,您可能在S3存储桶中拥有以TB或PB为单位的数据。如果我们要手动打开每个文件并手动读取PB级别的数据,几乎不可能分析这样的数据。这就是AWS Athena服务的作用。
简单来说,AWS Athena被用作一种数据分析服务,只需使用SQL查询访问S3存储桶中的数据即可。因此,如果您了解SQL的基本知识,就可以开始使用AWS Athena分析S3数据。
我们通过一个简短的例子来理解这一点。假设您已将其中一个存储桶配置为组织中多个帐户中所有负载均衡器的访问日志存储桶。您如何查询多年的日志数据并从这些日志文件中获取重要的有意义的见解?答案是AWS Athena。
AWS Athena的特点
- 基于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使用开源链接_3>作为后端。Presto是一种用于查询和分析大数据工作负载的分布式SQL引擎。
AWS Athena的定价和优化
使用AWS Athena时,使用AWS Athena时,每扫描1TB数据将收取5美元的费用。这个价格在一些AWS区域可能会略有不同。
- 高效查询:如果您熟悉SQL,您必须知道使用SQL从数据中获取特定结果可以有多种方式。为了优化Athena,您可以使用高效查询,这样应该可以减少运行查询的时间。
- 数据转换:如果您想进一步优化查询,可以压缩、分区或将数据转换为较小的数据集,进一步减少查询运行时间。通过使用数据转换,您可以将查询的优化程度提高90%。
- 虚拟表的连接:连接表是SQL的一个非常重要的特性。虽然连接操作可能看起来很简单,但它可能是一个非常复杂的操作。建议将较大的表放在左侧,将数据较少的表放在右侧。
AWS Athena和Redshift Spectrum之间的区别
Redshift Spectrum是另一种可用于在AWS S3存储桶上运行查询的服务。Redshift Spectrum和Athena都是无服务器的,可以在S3上运行复杂查询,并且按照数据处理的每TB收取5%的费用,那么它们有什么区别呢?
性能
AWS Athena使用AWS提供的资源池中的计算资源。相反,Redshift Spectrum使用根据Redshift集群大小分配的资源。这使您可以更好地控制Redshift Spectrum服务使用的资源,并且如果您希望提高性能,可以随时增加Redshift集群的大小。
加载用于处理的数据
这两个服务都使用虚拟表来在数据上运行SQL查询。虚拟表是使用Glue Data Catalog进行架构管理的。Athena可以直接使用Glue Data Catalog架构中的数据,而使用Redshift Spectrum时,您需要从Glue Data Catalog架构配置外部表。
这些是两个服务之间的主要区别,所以在Redshift Spectrum和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是一个可用于将数据转换为更高效和可读形式的服务,然后可以使用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 INPUT
和DESCRIBE OUTPUT
等语句。
结论
本文讨论了AWS Athena的数据分析工具,以及其特点、优势和一些限制。Athena是处理和分析S3存储桶数据的最强大工具之一。即使服务的限制相当简单,如果需要,也可以解决这些限制。
您还可以查看一些最佳实践secure AWS S3 Storage。