一般性问题

问:什么是 Amazon Athena?
Amazon Athena 是一种交互式查询服务,让您能够轻松使用标准 SQL 分析 Amazon S3 中的数据。Athena 是无服务器式服务,因此您无需设置或管理基础设施即可马上开始分析数据。您甚至无需将数据加载到 Athena 中,因为它可以直接处理 S3 中存储的数据。要开始使用,您只需登录到 Athena 管理控制台,定义 schema,然后开始查询即可。Amazon Athena 使用 Presto 并为标准 SQL 提供了全方位支持,可处理 CSV、JSON、ORC、Apache Parquet 和 Avro 等各种标准数据格式。Amazon Athena 不仅是快速、临时查询的理想选择,可与 Amazon QuickSight 集成轻松实现可视化,而且还能处理复杂的分析,包括大型联接、开窗函数和数组。
 
问:Amazon Athena 可以用来做什么?
Amazon Athena 可帮助您分析存储在 Amazon S3 中的数据。您可以使用 ANSI SQL 通过 Athena 运行临时查询,而无需将数据聚合或加载到 Athena 中。Amazon Athena 能够处理非结构化、半结构化和结构化的数据集。示例包括 CSV、JSON、Avro 或列式数据格式,如 Apache Parquet 和 Apache ORC。Amazon Athena 可与 Amazon QuickSight 集成,轻松实现可视化。此外,您还可以使用 Amazon Athena 生成报表,或借助商业智能工具或 SQL 客户端(通过 ODBCJDBC 驱动程序进行连接)浏览数据。
 
问:如何开始使用 Amazon Athena?
要开始使用 Amazon Athena,您只需登录到 Athena 的 AWS 管理控制台,然后通过在控制台中编写 DDL 语句或使用创建表向导来创建 schema 即可。然后,您可以使用内置的查询编辑器开始查询数据。Athena 直接从 Amazon S3 查询数据,因此无需加载数据。
 
问:如何访问 Amazon Athena?
您可以通过 AWS 管理控制台、API 或者 ODBC 或 JDBC 驱动程序访问 Amazon Athena。您可以使用 ODBCJDBC 驱动程序以编程方式运行查询、添加表或分区。
 
问:Amazon Athena 有哪些服务限制?
单击此处详细了解服务限制。
 
问:Amazon Athena 采用了何种基础技术?
Amazon Athena 使用完全支持标准 SQL 的 Presto,可处理 CSV、JSON、ORC、Avro 和 Parquet 等各种标准数据格式。Athena 能够处理复杂的分析,包括大型联接、开窗函数和数组。Amazon Athena 使用 Amazon S3 作为基础数据存储,因此具有高可用性和持久性(数据冗余地存储在多个设施和每个设施中的多个设备上)。请访问 此处,了解有关 Presto 的更多信息。
 
问:Amazon Athena 如何存储表定义和 schema?
Amazon Athena 使用托管的数据目录来存储有关您为 Amazon S3 中存储的数据创建的数据库和表的信息及 schema。在提供 AWS Glue 的区域内,您可以升级到结合使用 AWS Glue 数据目录和 Amazon Athena。在不提供 AWS Glue 的区域内,Athena 使用内部目录。
您可以使用 DDL 语句或通过 AWS 管理控制台修改目录。您定义的任何 schema 都会自动保存,除非明确将其删除。Athena 使用基于读取的 schema 技术,这意味着表定义在执行查询时会应用于您存储在 S3 中的数据。无需加载或转换数据。您可以删除表定义和 schema,这不会影响存储在 Amazon S3 上的基础数据。
 
问:我为什么应该升级到 AWS Glue 数据目录?
AWS Glue 是一项完全托管的 ETL 服务。Glue 有三个主要组件:1) 抓取程序,用于自动扫描数据源、识别数据格式和推断 schema;2) 完全托管的 ETL 服务,支持您转换数据并将其移动至多个目标;以及 3) 数据目录,用于存储有关 S3 或者符合 ODBC 或 JDBC 规范的数据存储中所存储的数据库和表的元数据信息。要发挥 Glue 的优势,您必须从使用 Athena 的内部数据目录升级为使用 Glue 数据目录。
升级到 Glue 数据目录具有以下优势:
  1. 统一的元数据存储库:AWS Glue 可以与各种 AWS 服务集成。AWS Glue 支持在 Amazon Aurora、Amazon RDS MySQL、Amazon RDS PostreSQL、Amazon Redshift 和 Amazon S3,以及 Amazon EC2 上运行的 Virtual Private Cloud (Amazon VPC) 中的 MySQL 和 PostgreSQL 数据库中存储的数据。AWS Glue 可与 Amazon Athena、Amazon EMR、Amazon Redshift Spectrum 以及任何 Apache Hive Metastore 兼容的应用程序进行开箱即用的集成。
  2. 自动 schema 和分区识别:AWS Glue 可以自动抓取您的数据源、识别数据格式并提出 schema 和转换建议。抓取程序可帮助自动创建表并自动加载分区。
  3. 轻松构建管道:AWS Glue 的 ETL 引擎能生成可自定义、可重用且可移植的 Python 代码。您可以使用喜爱的 IDE 或笔记本电脑编辑代码,并使用 GitHub 将其与其他人共享。ETL 作业准备就绪后,您可以安排它在 AWS Glue 完全托管的扩展 Spark 基础设施上运行。AWS Glue 是一项无服务器服务,因此它可以对运行 ETL 作业所需的资源进行预置、配置和扩展,从而让您能够将 ETL 与工作流程紧密集成。
单击 此处以了解有关 Glue 数据目录的更多信息。
 
问:是否有升级到 AWS 数据目录的分步指导?
有。您可以在 此处查看分步指南。
 
问:Amazon Athena 在哪些区域可用?
有关 Amazon Athena 在各个区域的可用性方面的详细信息,请参阅 区域性产品和服务
 

预览功能

问:Athena 中有哪些预览功能?
您现在可以在 Athena SQL 查询中调用 SageMaker 机器学习 (ML) 模型来运行推理。您能够在 SQL 查询中使用 ML 模型,这使得复杂的任务(例如异常检测、客户群分析和销售预测)变得像编写 SQL 查询一样简单。 了解更多。
 
通过联合查询,您现在可以通过同一个查询分析各种数据存储中存储的数据,无论是本地还是 AWS 中托管的数据。Athena 支持关系、非关系、对象或自定义数据源中的联合查询。您还可以使用 Query Federation SDK 编写您自己的数据源连接器。 了解更多。
 
通过用户定义函数 (UDF),您现在可以用Java编写自己的函数,并在 Athena SQL 查询中调用这些函数。 了解更多
 
您可以将 Athena 连接到外部的 Apache Hive Metastore。如果您的数据集存储在 Amazon S3 中,则除了使用 AWS Glue 数据目录作为元数据存储之外,还可以使用基于 AWS Lambda 的数据源连接器将 Athena 连接到 Hive Metastore。 了解更多。
 
问:如何测试预览功能?
源于工作组 AmazonAthenaPreviewFunctionality 的所有 Athena 查询都将被视为预览测试查询。您可以使用 Athena API 或 Athena UX 创建和设置新的工作组 AmazonAthenaPreviewFunctionality。要创建新的工作组, 请按照此处的步骤操作
 
以下是使用预览功能必须要注意的说明。请勿编辑工作组名称。您可以编辑其他工作组属性,例如“启用 CloudWatch 指标”和“启用申请方付款”。您可以使用 Athena 控制台、JDBC/ODBC 驱动程序或 API 来提交测试查询。在提交测试查询时,请确保指定工作组: AmazonAthenaPreviewFunctionality。预览功能仅在 us-east-1 区域中可用。如果在任何其他区域使用 Athena,并使用工作组 AmazonAthenaPreviewFunctionality 提交查询,您的查询将会失败。预览模式下不支持跨 AWS 区域调用。
 
问:在我的生产帐户中可以安全地使用 Athena 预览功能吗?
我们建议不要将生产工作负载加载到预览工作组 AmazonAthenaPreviewFunctionality 中。 预览工作组和您帐户中的其他工作组的查询性能有所不同。此外,我们可能会向可能向后不兼容的预览工作组添加新功能和错误修复。
 
问:如何提交我的查询?
您可以结合使用 Athena 控制台、 Athena APIAthena 预览 JDBC 驱动程序和任何现成的查询和结果可视化工具(如 SQL WorkBench)提交查询。
 
问:如何提供关于预览功能的反馈?
您的反馈对我们至关重要。请将您的反馈通过电子邮件发送至 athena-feedback@amazon.com。
 
问:测试预览功能是否会收费?
在预览期间,我们不会对从联合数据源扫描的数据收费。但是,我们将对从 Amazon S3 扫描的数据将按标准 Athena 费率收费。此外,我们还将对与 Athena 一起使用的 AWS 服务(如 Amazon S3、AWS Lambda、AWS Glue、Amazon SageMaker 和 AWS Serverless Application Repository)按标准费率收费。例如,对于存储、请求和区域间数据传输,我们将按照 S3 费率收费。默认情况下,查询结果存储在您选择的 S3 存储桶中,也按标准 Amazon S3 费率计费。如果您使用 AWS Lambda,我们将根据您函数的请求数量和持续时间,以及代码执行花费的时间向您收费。
 
问:预览结束时会发生什么?
所有使用工作组 AmazonAthenaPreviewFunctionality 提交的查询都将失败。您可以继续从其他工作组提交查询。如果不指定任何工作组,查询会自动使用默认主工作组执行。请注意,任何功能的预览都有可能随时终止。

何时该使用 Athena,何时该使用其他大数据服务

问:Amazon Athena、Amazon EMR 和 Amazon Redshift 之间有何差异?
查询服务(如 Amazon Athena)、数据仓库(如 Amazon Redshift)和复杂的数据处理框架(如 Amazon EMR)都可以满足不同的需求和使用案例。您只需要为作业挑选适当的工具即可。Amazon Redshift 为企业报告和商业智能工作负载提供最快的查询性能,这一点在涉及具有多个联接和子查询的极为复杂的 SQL 查询方面尤为明显。与本地部署相比,Amazon EMR 使运行高度分布式的处理框架(如 Hadoop、Spark 和 Presto)变得简单且经济高效。Amazon EMR 非常灵活 - 您可以运行自定义的应用程序和代码,定义特定的计算、内存、存储和应用程序参数,以优化您的分析需求。Amazon Athena 为针对 S3 中的数据运行临时查询提供了最简单的方法,您不必设置或管理任何服务器。
 
问:什么时候该使用 Amazon Redshift 这样功能全面的企业数据仓库?什么时候该使用 Amazon Athena 这样的查询服务呢?
当您需要将许多不同来源(如库存系统、财务系统和零售系统)的数据汇总成一种通用格式并长期存储时,或者需要从历史数据生成复杂的业务报告时,像 Amazon Redshift 这样的数据仓库是您最好的选择。
 
数据仓库从公司的各个位置收集数据,并充当生成和分析报告的“单一信息源”。数据仓库从不同来源提取数据、格式化并组织数据、存储数据,同时支持生成业务报告的复杂、高速查询。Amazon Redshift 中的查询引擎经过优化,在需要运行联接大量非常大的数据库表的复杂查询使用案例中执行得非常好。TPC-DS 是旨在复制此使用案例的标准基准,与针对非结构化数据进行优化的查询服务相比,Redshift 将此类查询的运行速度提高了高达 20 倍。当需要针对高度结构化的数据运行查询并需要在许多大型表之间进行大量联接时,您应选择 Amazon Redshift。
 
相比之下,Amazon Athena 这样的查询服务可以直接对 Amazon S3 中的数据运行交互式查询,您不必操心格式化数据或管理基础设施之类的繁琐细节。例如,如果只需要对某些网络日志运行快速查询以诊断站点上的性能问题,则 Athena 就是一种很好的选择。通过查询服务,您可以迅速开始工作。您只需为数据定义一个表,即可使用标准 SQL 开始查询。
 
此外,您还可以将两项服务配合使用。如果您在将数据加载到 Amazon Redshift 之前将其暂存在 Amazon S3 上,则也可以将这些数据注册到 Amazon Athena 并通过其进行查询。
 
问:分别应在何时使用 Amazon EMR 和Amazon Athena?
Amazon EMR 的功能远不止运行 SQL 查询。借助 EMR,您可以为 Machine Learning、图形分析、数据转换、流式处理数据以及您可以编写代码的几乎任何应用运行各种横向扩展的数据处理任务。如果需要使用自定义代码通过最新的大数据处理框架(如 Spark、Hadoop、Presto 或 Hbase)来处理和分析超大数据集,则应该使用 Amazon EMR。通过 Amazon EMR,您可以全面掌控集群及其上安装的软件的配置。
 
如果需要对 Amazon S3 上的数据运行临时的交互式 SQL 查询,又不想管理任何基础设施或集群,则应该使用 Amazon Athena。
 
问:可以使用 Amazon Athena 查询使用 Amazon EMR 处理的数据吗?
可以。Amazon Athena 支持许多与 Amazon EMR 相同的数据格式。Athena 的数据目录兼容 Hive 元存储。如果您正在使用 EMR 并且已有 Hive 元存储,则只需在 Amazon Athena 上执行 DDL 语句,即可开始查询数据,不会对您的 Amazon EMR 作业产生任何影响。
 
问:Athena 中的联合查询与其他 AWS 服务有何关联?[预览]
Athena 中的联合查询允许您跨各种关系、非关系和自定义数据源运行 SQL 查询。您可以通过一种统一方式跨多个数据存储运行 SQL 查询。
 
问:Athena 中的机器学习与其他 AWS 服务有何关联?[预览]
Athena SQL 查询可以调用 Amazon SageMaker 上部署的 ML 模型。您可以指定它们想要存储这些 Athena SQL 查询结果的 Amazon S3 位置。
 
 

创建表、数据格式和分区

问:如何在 Amazon S3 上为我的数据创建表和 schema?
Amazon Athena 使用 Apache Hive DDL 定义表。您可以使用 Athena 控制台、通过 ODBC 或 JDBC 驱动程序、通过 API 或使用 Athena 创建表向导来运行 DDL 语句。如果将 AWS Glue 数据目录与 Athena 配合使用,您还可以使用 Glue 抓取程序来自动推断 schema 和分区。AWS Glue 抓取程序可连接到数据存储,使用分类器的优先级列表来提取数据和其他统计数据的 schema,然后使用该元数据填充 Glue 数据目录。抓取程序可定期运行,以检测新数据的可用性以及现有数据的更改,包括表定义的更改。抓取程序会自动将新表、新分区以及新版本的表定义添加到现有表。您可以自定义 Glue 抓取程序以对自己的文件类型进行分类。
 
当您在 Amazon Athena 中创建新的表 schema 时,schema 将存储在数据目录中,并在执行查询时使用,但不会修改您存储在 S3 中的数据。Athena 采用称作“基于读取的 schema”的方法,它在您执行查询时将 schema 投射到数据。这样就无需加载或转换任何数据。了解有关 创建表的更多信息。
 
问:Amazon Athena 支持哪些数据格式?
Amazon Athena 支持许多类型的数据格式,如 CSV、TSV、JSON、Textfiles 等;此外,它还支持开源列格式,如 Apache ORC 和 Apache Parquet。Athena 还支持 Snappy、Zlib、LZO 和 GZIP 格式的压缩数据。通过压缩、分区和使用列格式,您可以提高性能并降低成本。
 
问:Amazon Athena 支持哪些数据类型?
Amazon Athena 支持简单数据类型(如 INTEGER、DOUBLE、VARCHAR)及复杂数据类型(如 MAPS、ARRAY、STRUCT)。 
 
问:可以在 Athena 上运行 Hive 查询吗?
Amazon Athena 只将 Hive 用于 DDL(数据定义语言)以及创建/修改和删除表和/或分区。请 单击此处查看受支持语句的完整列表。在 Amazon S3 上运行 SQL 查询时,Athena 使用 Presto。您可以运行符合 ANSI 标准的 SQL SELECT 语句来查询 Amazon S3 中的数据。
 
问:什么是 SerDe?
SerDe 表示串行器/解串器 (Serializer/Deserializer),它们是告诉 Hive 如何解释数据格式的库。Hive DLL 语句要求您指定 SerDe,以便系统知道如何解释您指向的数据。Amazon Athena 使用 SerDe 解释从 Amazon S3 读取的数据。SerDe 在 Athena 中的概念与在 Hive 中使用的概念相同。Amazon Athena 支持以下 SerDe:
  1. Apache Web 日志:“org.apache.hadoop.hive.serde2.RegexSerDe”
  2. CSV:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”
  3. TSV:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”
  4. 自定义分隔符:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”
  5. Parquet:“org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe”
  6. Orc:“org.apache.hadoop.hive.ql.io.orc.OrcSerde”
  7. JSON:“org.apache.hive.hcatalog.data.JsonSerDe”或“org.openx.data.jsonserde.JsonSerDe”
 
问:可以向 Amazon Athena 添加自己的 SerDe(串行器/解串器)吗?
目前,您无法向 Amazon Athena 添加自己的 SerDe。感谢您的反馈!如果您希望添加任何 SerDe,请与 Athena 团队 ( Athena-feedback@amazon.com) 联系
 
问:我使用 Spark/Hive 创建了 Parquet/ORC 文件。我可以通过 Athena 查询它们吗?
可以。您可以在 Athena 中读取通过 Spark 创建的 Parquet 和 ORC 文件。
 
问:我的数据来自 Kinesis Firehose。如何使用 Athena 查询?
如果您的 Kinesis Firehose 数据存储在 Amazon S3 中,您可以使用 Amazon Athena 进行查询。只需在 Athena 中为您的数据创建 schema 并开始查询即可。建议您将数据组织到分区中,以优化性能。您可以使用 ALTER TABLE DDL 语句添加 Kinesis Firehose 创建的分区。了解有关 分区的更多信息。
 
问:Amazon Athena 是否支持数据分区?
是。Amazon Athena 允许您对任意列上的数据进行分区。分区能够限制查询扫描的数据量,从而节省成本并提高性能。您可以在 CREATE TABLE 语句中使用 PARTITIONED BY 子句指定分区 scheme。了解有关 分区数据的更多信息。
 
问:如何在 Amazon Athena 中向现有的表添加新数据?
如果您的数据已分区,只要 Amazon S3 上有新数据可用,就需要运行元数据查询 (ALTER TABLE ADD PARTITION) 将此分区添加到 Athena。如果您的数据未分区,只需将新数据(或文件)添加到现有前缀,即可将数据自动添加到 Athena。了解有关 分区数据的更多信息。
 
问:我在 Amazon S3 中存储着大量日志数据。可以使用 Amazon Athena 进行查询吗?
可以。通过 Amazon Athena 您可以方便地对现有日志数据运行标准 SQL 查询。Athena 直接从 Amazon S3 查询数据,因此无需移动或加载数据。只需使用 DDL 语句定义 schema,即可开始查询数据。

查询和数据格式

问:Amazon Athena 支持哪些类型的查询?
Amazon Athena 支持 ANSI SQL 查询。Amazon Athena 使用 Presto(一种开源的内存分布式 SQL 引擎),能够处理复杂的分析,包括大型联接、开窗函数和数组。

问:能否将 Amazon QuickSight 与 Amazon Athena 配合使用?
可以。Amazon Athena 与 Amazon QuickSight 集成,可方便地直观呈现存储在 Amazon S3 中的数据。

问:Athena 是否支持其他 BI 工具和 SQL 客户端?
是。Amazon Athena 随附 ODBC 和 JDBC 驱动程序,您可以将其与其他商业智能工具和 SQL 客户端配合使用。详细了解如何将 ODBCJDBC 驱动程序与 Athena 配合使用。

问:如何访问 Amazon Athena 支持的函数?
有关 Amazon Athena 支持的函数的更多信息,请单击 此处
 
问:如何提高查询性能?
您可以通过压缩、分区或将数据转换为列格式来提高查询性能。Amazon Athena 支持开源列数据格式,如 Apache Parquet 和 Apache ORC。将数据转换为压缩的列格式可降低成本,并通过减少 Athena 在执行查询时从 S3 扫描的数据来提高查询性能。
 
问:Athena 支持用户自定义函数 (UDF) 吗?[预览]
Amazon Athena 现在支持用户定义函数 (UDF) 以使您能够编写自定义标量函数并在 SQL 查询中调用它们。虽然 Athena 提供了内置函数,但 UDF 让您能够执行自定义处理,例如压缩和解压数据、编写敏感数据或应用自定义解密。

您可以使用 Athena Query Federation SDK 在 Java 中编写您的 UDF。在提交到 Athena 的 SQL 查询中使用 UDF 时,将会在 AWS Lambda 上调用和执行该 UDF。UDF 可用于 SQL 查询的 SELECT 和 FILTER 子句。您可以在同一查询中调用多个 UDF。
 
问:编写 UDF 时的用户体验是什么?[预览]
您可以使用 Athena Query Federation SDK 编写您的 UDF。 此处提供了 UDF 示例。 您可以将函数上传到 AWS Lambda,然后在 Athena 查询中调用它。 单击此处可以开始。
 
Athena 将在一组数据集行上调用 UDF 以优化性能。

联合查询 [预览版]

问:为何应在 Athena 中使用联合查询?[预览]
开发者通常会选择关系、键值、文档、内存中、搜索、图形、时间序列和分类账数据库以及在 S3 上存储他们的数据。跨多种数据源对数据运行分析可能十分复杂且耗时。分析师通常需要学习新的编程语言和数据库构造,并构建复杂的管道来抽取、转换和创建数据副本,然后才能对数据进行分析。同样,数据科学家通常需要从多个数据源抽取数据,以创建适合于功能抽取和训练的数据集。这个过程十分耗时,并且不允许构建让分析师和数据科学家能够轻松构建管道以从多个来源抽取数据的自助服务平台。分析师通常需要依靠数据工程团队来构建这样的管道,这样就存在延迟问题并增加了复杂性。联合查询提供简单易用、按查询付费的无服务器服务,让您可以跨多个此类数据存储运行 SQL 查询,从而消除了相关复杂性。您可以跨多个数据源使用众所周知的 SQL 构造查询数据以实现快速分析,或使用调度的 SQL 查询从多个数据源抽取和转换数据,并将它们存储在 S3 中以用于将来的分析。
 
此外,您还可以使用专有或自定义数据库和目录。Athena 联合查询是可扩展的,因为它们允许您编写自己的连接器或使用社区开发的连接器,对您选择的任何数据源或自定义目录运行 SQL 查询。多种此类数据源有开源参考实现,可以用作基准来开发新的数据源。
 
问:Athena 联合查询支持哪些用例?[预览]
Athena 联合查询支持多种用例。一个例子是您通常将数据存储在多个数据存储中的临时分析。假设有一家电子商务公司使用 Amazon ElasticCache Redis 来存储活跃订单,使用 Amazon DocumentDB 或 MongoDB 存储客户的特定信息,如电子邮件地址、配送地址等,使用 Amazon CloudWatch Logs(例如,自定义数据存储的日志)来存储订单处理应用程序的日志事件。您可能想要了解报告为延迟的特定订单发生了什么事情。您可以使用简单查询来合并来自多个数据存储的数据,以快速运行分析。
 
另一个例子是来自多个数据源的 ETL。运行分析通常要求聚集来自多个数据源的数据,以便可以使用 Athena、Apache Spark 或 Apache Presto 等引擎将聚集的数据进一步发布到数据仓库或进行查询。此类聚集要求构建数据管道,以便能够按计划从多个来源抽取和转换数据。构建数据管道通常要求学习新的编程语言,如 Python 和 Java,或使用大规模分布式系统,如 Apache Spark。分析师通常必须依靠数据工程团队来构建此类管道。通过 Athena 联合查询,任何人都可以将管道表示为 SQL 语句,并安排为定期运行。
 
第三个例子是机器学习抽取:数据科学家通常需要从多个数据源抽取数据,以创建适合于功能抽取和训练的数据集。这个过程十分耗时,而且不允许构建自助服务平台。
 
问:Athena 数据源连接器是如何工作的?[预览]
您可以通过在 Athena 中注册数据存储对新数据存储运行 SQL 查询。要注册数据源,请使用特定于该数据源的 Athena 数据源连接器。连接器可以用来将 Athena 的查询功能扩展到新数据源。您可以使用 AWS 提供的开源连接器,构建您自己的连接器或改善现有连接器,或者使用社区或市场构建的连接器。根据数据源的类型,连接器管理元数据信息,识别需要扫描、读取或过滤的特定表部分,并管理并行机制。
 
连接器作为 AWS Lambda 函数在客户账户中运行。每个连接器都由两个特定于数据源的 Lambda 函数组成——一个用于元数据,一个用于记录读取。您可以使用 Github 存储库中的代码来部署 Lambda 函数,或者可以使用 AWS Serverless Application Repository 中预先部署的 Lambda 函数。部署 Lambda 函数后,它们会产生唯一的 Amazon 资源名称 (ARN)。您必须将这些 ARN 注册到 Athena。注册 ARN 让 Athena 能够知道在查询执行期间要与哪些 Lambda 函数通信。注册 ARN 后,就可以开始查询注册的数据源了。需要对每个数据源重复执行该过程。
 
查询在联合数据源上运行时,Athena 会扇出并行读取元数据和数据的 Lambda 调用。并行调用数量取决于账户中的 Lambda 并行限制。例如,如果您的 Lambda 并行调用数量限制为 300,则 Athena 针对记录读取可以调用 300 个并行 Lambda 函数。对于并行运行的两个查询,Athena 将调用两次并行执行数量。您可以定义它们自己的限制,从而让它们能够控制成本和数据源的吞吐量。
 
问:哪些连接器可用于 Athena 联合查询?[预览]
Athena 拥有针对 Apache HBase、Amazon DocumentDB、Amazon DynamoDB 和 Amazon CloudWatch Logs 以及 CloudWatch Metrics 的开源数据源连接器。Athena 还有通用 JDBC 连接器,用于连接到任何符合 JDBC 的数据源,以及 AWS 配置管理数据库 (CMDB) 连接器,允许客户对 AWS 资源元数据运行查询。
 
问:如何使用 Query Federation SDK?[预览]
您可以使用 Query Federation SDK 创建您自己的连接器,以在使用 Athena 查询数据源时使用。我们针对每种连接器提供了模板实现。您可以使用这些模板作为基准。首先请访问 我们的文档
 
问:我可以将联合查询功能用于 ETL 吗? 具体的工作流程是怎样的?[预览]
所有 Athena 查询结果都存储在您设置的 Amazon S3 位置中。您可以使用 Athena 的联合查询功能执行查询,以通过一个 SQL 查询扫描您选择的数据源并将结果存储到 S3 中。支持常见的 SQL 构造,如 JOIN、Filter 子句等。此外,您还可以使用 UDF 功能定义自己的函数,以预处理或后处理结果数据集。
 
问:将来会发布非 JAVA 编程语言的 SDK 支持吗?[预览]
请向 athena-feedback@amazon.com 发送电子邮件,告知我们您需要哪些编程语言的支持
 
问:Query Federation SDK 有哪些已知限制?[预览]
在预览推出时,Query Federation SDK 仅支持读取和基于 JAVA 的 Lambda 函数。

机器学习 [预览版]

问:Athena 支持哪些嵌入式 ML 用例?[预览]
Athena 的 ML 用例跨越多个不同的行业,如以下示例所示。金融风险数据分析师可以运行 what-if 分析和蒙特卡洛模拟。业务分析师可以运行线性回归或预测模型来预测未来价值,帮助他们创建更丰富的、有前瞻性的、能够预测收入的业务仪表板。营销分析师可以使用 K-均值集群模型来帮助确定不同的客户群体。安全分析师可以使用逻辑回归模型(双变和多变),通过各种对数发现异常和检测安全事故。
 
问:哪些 ML 模型可以与 Athena 一起使用?[预览]
Athena 可以调用 Amazon SageMaker 上部署的任何 ML 模型。您可以灵活地使用专有数据训练自己的模型,或使用预先训练好并部署到 SageMaker 上的模型。例如,集群分析很可能是根据您自己的数据训练的,因为您想要将新记录分类到用于先前记录的相同类别中。在另一方面,为了预测真实世界体育赛事,您可以使用公开可用的模型,因为所用的训练数据已经位于公共领域中。领域特定或行业特定预测通常将根据您在 SageMaker 中的数据进行训练,而无差别 ML 需求可能会使用外部模型。
 
问:如何使用 Athena 训练我的 ML 模型?[预览]
您不能使用 Athena 在 SageMaker 上训练和部署您的 ML 模型。您可以训练 ML 模型,或使用通过 Athena 在 SageMaker 上部署的预先训练好的现有模型。 这里提供了详细记录 SageMaker 上的训练步骤的文档。
 
问:我可以在其他服务(如 Comprehend、Forecasting)上部署的模型或我自己的 EC2 集群上部署的模型上运行推理吗?[预览]
Athena 仅支持调用 SageMaker 上部署的 ML 模型。我们欢迎您提供反馈,告诉我们您想要将哪些服务与 Athena 结合使用。请将您的反馈通过电子邮件发送至 athena-feedback@amazon.com。
 
问:使用 Athena 查询进行 SageMaker 推理有哪些性能影响?[预览]
我们会持续地向我们的功能和服务增加工作性能改进。为优化 Athena ML 查询的性能,在您调用 SageMaker ML 模型进行推理时,我们会将行整理为批次。目前,我们不支持用户提供的行批量大小覆盖。
 
问:Athena ML 支持哪些功能?[预览]
Athena 提供由 SQL 接口封装的 ML 推理(预测)功能。您还可以调用 Athena 用户定义函数(UDF,也包含在预览版中),以对结果集调用预处理或后处理逻辑。输入可以包含任何列、记录或表,多个调用可以打包在一起以提高可扩展性。您可以在 Select 阶段或 Filter 阶段运行推理。要了解更多信息,请访问我们的 文档
 
问:我可以使用哪些 ML 模型?[预览]
Amazon SageMaker 支持多种 ML 算法。您还可以创建自己的专有 ML 模型并部署到 Amazon SageMaker。例如,集群分析很可能是根据您自己的数据训练的,因为您想要将新记录分类到用于先前记录的相同类别中。在另一方面,为了预测真实世界体育赛事,您可以使用公开可用的模型,因为所用的训练数据已经位于公共领域中。
 
根据我们的预期,领域特定或行业特定预测通常将根据您在 SageMaker 中的数据进行训练,而无差别 ML 需求(如,机器翻译)可能会使用外部模型。

安全性与可用性

问:如何控制对我的数据的访问?
Amazon Athena 允许您通过使用 AWS Identity and Access Management (IAM) 策略、访问控制列表 (ACL) 和 Amazon S3 存储桶策略来控制对数据的访问。通过 IAM 策略,您可以授予 IAM 用户对 S3 存储桶的细化控制权。通过控制对 S3 中数据的访问,您可以限制用户使用 Athena 对其进行查询。
 
问:Athena 可以查询 Amazon S3 中的加密数据吗?
可以。您可以查询使用 Amazon S3 托管加密密钥在服务器端加密的数据、使用 AWS Key Management Service (KMS) 托管密钥在服务器端加密的数据以及使用 KMS 托管的密钥在客户端加密的数据。Amazon Athena 还与 KMS 实现了集成,支持加密您的结果集。
 
问:Athena 是否具有高可用性?
是。Amazon Athena 具有高可用性,它会利用跨多个设施的计算资源执行查询,如果特定设施无法访问,它会适当地自动路由查询。Athena 使用 Amazon S3 作为基础数据存储,可确保您的数据具有高可用性和高持久性。Amazon S3 提供耐久的基础设施存储重要数据,其设计旨在为对象提供 99.999999999% 的耐久性。您的数据将跨多个设施和在各个设施的多个设备间冗余存储。
 
问:我可以提供对他人 S3 存储桶的跨账户访问权限吗?
可以。您可以提供对 Amazon S3 的跨账户访问权限。

定价和计费

问:Amazon Athena 如何定价?
Amazon Athena 按查询定价,并基于查询扫描的数据量收费。您可以在 Amazon S3 上存储各种格式的数据。如果您压缩数据、分区或将其转换为列式存储格式,则由于扫描的数据较少,您需要支付的费用也会减少。将数据转换为列格式能够让 Athena 只读取处理查询所需的列。有关更多详情,请参阅 Athena 定价页面
 
问:为什么使用列格式时收费较少?
Amazon Athena 根据查询扫描的数据量收取费用。压缩数据会减少 Amazon Athena 扫描的数据量。将数据转换为列格式能够让 Athena 有选择地只读取处理数据所必需的列。对数据进行分区也能限制 Athena 扫描的数据量。这能够节省成本并提高性能。有关详细信息,请参阅 定价示例。
 
问:如何降低成本?
通过压缩、分区和将数据转换为列格式,可以节省 30%-90% 的查询成本,同时获得更好的性能。这几种操作都能减少 Amazon Athena 执行查询所需扫描的数据量。Amazon Athena 支持 Apache Parquet 和 ORC 这两种最为流行的开源列格式。您可以在 Athena 控制台中查看每次查询扫描的数据量。
 
问:查询失败时 Amazon Athena 是否收费?
否。如果查询失败,系统不会向您收取费用。
 
问:如果取消查询,Amazon Athena 是否会收费?
会。如果手动取消查询,您需要为取消查询前已扫描的数据量付费。
 
问:Amazon Athena 还有其他收费项目吗?
Amazon Athena 直接从 Amazon S3 查询数据,因此,系统会针对您的源数据按 S3 费率收费。Amazon Athena 运行查询时将结果存储在您选择的 S3 存储桶中,这些结果集也按照标准 S3 费率计费。建议您监控这些存储桶,使用生命周期策略来控制保留多少数据。
 
问:使用 AWS Glue 数据目录是否需要付费?
是。您需要单独支付使用 AWS Glue 数据目录的费用。单击 此处了解有关 Glue 数据目录定价的更多信息。
网页图片
访问定价页面

浏览定价选项。

了解更多 
账户注册图片
注册免费账户

立即享受 AWS 免费套餐。 

注册 
工具箱图片
开始在控制台中构建

在 AWS 管理控制台中开始使用 Amazon Athena 进行构建。

登录