一般性问题
Amazon Athena for SQL
- 统一的元数据存储库:AWS Glue 集成在各种 AWS 服务中。AWS Glue 支持存储在 Amazon Aurora、Amazon Relational Database Service (RDS) for MySQL、Amazon RDS for PostgreSQL、Amazon Redshift 和 S3 中的数据,以及在 Amazon Elastic Compute Cloud (EC2) 上运行的 Amazon Virtual Private Cloud (VPC) 中的 MySQL 和 PostgreSQL 数据库。AWS Glue 提供与 Athena、Amazon EMR、Amazon Redshift Spectrum 以及与 Apache Hive 元存储兼容的应用程序的开箱即用型集成。
- 自动架构和分区识别:AWS Glue 可以自动抓取您的数据来源、识别数据格式并提出架构和转换建议。爬网程序可帮助自动创建表并自动加载分区。
要了解有关服务限制的更多信息,请查看 Amazon Athena 用户指南:服务限额。
创建表、数据格式和分区
- Apache Web 日志:“org.apache.hadoop.hive.serde2.RegexSerDe”
- CSV:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”
- TSV:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”
- 自定义分隔符:“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”
- Parquet:“org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe”
- Orc:“org.apache.hadoop.hive.ql.io.orc.OrcSerde”
- JSON: “org.apache.hive.hcatalog.data.JsonSerDe” or "org.openx.data.jsonserde.JsonSerDe"
查询、数据格式和多云
您可以使用 Athena Query Federation SDK 在 Java 中编写 UDF。在提交到 Athena 的 SQL 查询中使用 UDF 时,将会在 AWS Lambda 上调用和运行该 UDF。UDF 可用于 SQL 查询的 SELECT 和 FILTER 子句。您可以在同一查询中调用多个 UDF。
联合查询
问:什么是联合查询?
如果您有 S3 以外的数据来源,可以使用 Athena 就地查询数据或者构建从多个数据来源提取数据并将其存储在 S3 中的管道。使用 Athena 联合查询,您可以跨关系、非关系、对象和自定义数据来源运行 SQL 查询。
问:为何应在 Athena 中使用联合查询?
企业经常将数据存储在满足其应用程序或业务流程需要的数据来源中。除了在 S3 数据湖中存储数据之外,这些数据来源可能还包括关系、键值、文档、内存中、搜索、图形、时间序列和分类账数据库。在这些不同的数据来源上执行分析可能是复杂且耗时的,因为它通常需要学习新的编程语言或数据库构造,并在用于分析之前构建复杂的管道来提取、转换和复制数据。Athena 通过允许您对它所在的数据运行 SQL 查询,降低了这种复杂性。您可以跨多个数据来源使用众所周知的 SQL 构造查询数据以实现快速分析,或使用调度的 SQL 查询从多个数据来源提取和转换数据,并将它们存储在 S3 中以用于将来的分析。
问:支持哪些数据来源?
Athena 为 AWS、本地存储和其他云端超过 30 个热门数据存储提供内置连接器,这些数据存储包括 Amazon Redshift、Amazon DynamoDB、Google BigQuery、Google Cloud Storage、Azure Synapse、Azure Data Lake Storage、Snowflake 和 SAP Hana。您可以使用这些连接器在结构化、半结构化、对象、图形、时间序列和其他数据存储类型上支持 SQL 分析使用案例。有关受支持来源的列表,请查看 Amazon Athena 用户指南:可用的数据来源连接器。
您还可以使用 Athena 数据连接器开发工具包创建自定义数据来源连接器并使用 Athena 来查询它。首先查看文档和示例连接器实施。
问:联合查询支持哪些使用案例?
通过 Athena,您可以运用现有的 SQL 知识,从广泛的数据来源中提取洞察,而无需学习一门新的语言,开发脚本来提取(和复制)数据,或管理基础设施。使用 Amazon Athena,您可以执行以下任务:
- 使用单一工具和 SQL 方言对分布在多个数据存储中的的数据进行按需分析。
- 可视化 BI 应用程序中的数据,这些应用程序通过 ODBC 和 JDBC 接口将复杂的多源连接向下推送到 Athena 的分布式计算引擎。
- 通过 Athena 与 AWS Step Functions 的集成,设计自助式 ETL 管道和基于事件的数据处理工作流。
- 统一多种数据来源,为 ML 模型训练工作流生成丰富的输入功能。
- 开发面向用户的数据即产品应用程序,提供跨数据网格架构的洞察。
- 在您的企业将本地部署资源迁移到 AWS 时,支持分析使用案例。
问:我可以将联合查询用于 ETL 吗?
Athena 将查询结果存储在 S3 中的一个文件中。这意味着您可以使用 Athena 让其他用户和应用程序能够使用联合数据。如果您想要使用 Athena 对数据执行分析而不重复查询基础源,请使用 Athena 的 CREATE TABLE AS 函数。您还可以使用 Athena 的 UNLOAD 函数查询数据并将结果以特定文件格式存储在 S3 上。
问:数据来源连接器是如何工作的?
数据来源连接器是运行在 Lambda 上的一段代码,它在目标数据来源和 Athena 之间进行转换。当您使用数据来源连接器向 Athena 注册数据存储时,可以在联合数据存储上运行 SQL 查询。当查询在联合源上运行时,Athena 会调用 Lambda 函数并要求它运行特定于联合源的查询部分。要了解更多信息,请查看 Amazon Athena 用户指南:使用 Amazon Athena 联合查询。
问:支持哪些数据来源?
Athena 为 AWS、本地存储和其他云端超过 30 个热门数据存储提供内置连接器,这些数据存储包括 Amazon Redshift、Amazon DynamoDB、Google BigQuery、Google Cloud Storage、Azure Synapse、Azure Data Lake Storage、Snowflake 和 SAP Hana。您可以使用这些连接器在结构化、半结构化、对象、图形、时间序列和其他数据存储类型上支持 SQL 分析使用案例。有关支持的源列表,请参阅使用 Athena 数据来源连接器。
您还可以使用 Athena 数据连接器开发工具包创建自定义数据来源连接器并使用 Athena 来查询它。首先查看文档和示例连接器实施。
机器学习
问:Athena 支持哪些嵌入式 ML 用例?
Athena 的 ML 用例跨越多个不同的行业,如以下示例所示。金融风险数据分析师可以运行 what-if 分析和蒙特卡洛模拟。业务分析师可以运行线性回归或预测模型来预测未来价值,帮助他们创建更丰富的、有前瞻性的、能够预测收入的业务仪表板。营销分析师可以使用 K-均值集群模型来帮助确定不同的客户群体。安全分析师可以使用逻辑回归模型,通过对数发现异常和检测安全事故。
问:哪些 ML 模型可以与 Athena 一起使用?
Athena 可以调用 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 阶段运行推理。要了解更多信息,请参阅 Amazon Athena 用户指南:将机器学习(ML)与 Amazon Athena 结合使用。
问:我可以使用哪些 ML 模型?
SageMaker 支持各种 ML 算法。您还可以创建自己的专有 ML 模型并将其部署到 SageMaker。例如,集群分析很可能是根据您自己的数据训练的,因为您想要将新记录分类到用于先前记录的相同类别中。在另一方面,为了预测真实世界体育赛事,您可以使用公开可用的模型,因为所用的训练数据将位于公共领域中。
根据我们的预期,特定于领域或行业的预测通常将根据您在 SageMaker 中的数据进行训练,而无差别 ML 需求(如,机器翻译)可能会使用外部模型。
安全和可用性
问:如何控制对我的数据的访问?
Amazon Athena 支持使用 AWS Lake Formation 进行精细访问控制。通过 AWS Lake Formation,您可以集中管理 S3 数据湖中数据目录资源的权限和访问控制。您可以使用表格式(如 Apache Iceberg、Apache Hudi 和 Apache Hive)在 Athena 查询中对以任何支持的文件格式存储的数据实施精细访问控制策略。您可以灵活选择最适合您的用例的表和文件格式,并在使用 Athena 时获得集中数据治理的优势,以确保数据访问安全。例如,您可以使用 Iceberg 表格式将数据存储在 S3 数据湖中,以实现大规模的可靠写入事务,同时使用 Lake Formation 中的行级安全筛选器,以便居住在不同国家/地区的数据分析师只能访问位于本国家/地区的客户的数据,以满足法规要求。对表格式和文件格式的新扩展支持不需要更改在 Lake Formation 中设置精细访问控制策略的方式,只需要 Athena 引擎版本 3,该版本提供了新功能和改进的查询性能。Amazon Athena 允许您通过使用 AWS Identity and Access Management (IAM) 策略、访问控制列表(ACL)和 S3 存储桶策略来控制对数据的访问。通过 IAM 策略,您可以授予 IAM 用户对 S3 存储桶的细化控制权。通过控制对 S3 中数据的访问,您可以限制用户使用 Athena 对其进行查询。
问:Athena 可以查询 S3 中的加密数据吗?
可以。您可以查询使用 S3 托管加密密钥在服务器端加密(SSE)的数据、使用 AWS Key Management Service (KMS) 托管密钥在服务器端加密的数据以及使用 AWS KMS 托管的密钥在客户端加密(CSE)的数据。Athena 还与 AWS KMS 实现了集成,支持加密您的结果集。
问:Athena 是否具有高可用性?
可以。Athena 具有高可用性,它会利用跨多个设施的计算资源运行查询,如果特定设施无法访问,它会适当地自动路由查询。Athena 使用 S3 作为基础数据存储,可确保您的数据具有高可用性和高持久性。S3 提供持久的基础设施来存储重要数据。您的数据将跨多个设施和在各个设施的多个设备间冗余存储。
问:我可以提供对他人 S3 存储桶的跨账户访问权限吗?
可以。您可以提供对 S3 的跨账户访问权限。
定价与计费
问:Athena 如何定价?
使用 Athena,您可以选择根据扫描的数据或查询所需的计算为每次查询付费。每个查询的定价基于查询扫描的数据量(以 TB 字节为单位)。您可以在 S3 上以各种格式存储数据。如果您压缩数据、分区或将其转换为列式存储格式,则由于查询扫描的数据较少,您需要支付的费用也会减少。将数据转换为列格式能够让 Athena 只读取必须处理查询的列。使用预置容量,您可以按小时为查询处理容量支付费用,而不是为扫描的数据支付费用。您可以在同一个账户中使用按查询计费和基于计算的计费。 有关更多详细信息,请查看 Amazon Athena 定价页面。
问:为什么使用列格式时收费较少?
对于按查询计费,Athena 根据每次查询扫描的数据量收费。对数据进行压缩可使 Athena 扫描较少的数据。将数据转换为列格式能够让 Athena 有选择地只读取处理数据所必需的列。对数据进行分区也能限制 Athena 扫描的数据量。这能够节省成本并提高性能。有关更多详细信息,请查看 Amazon Athena 定价页面。
问:如何降低成本?
借助按查询计费,通过压缩、分区和将数据转换为列格式,可以每次查询节省 30%-90% 的成本,同时获得更好的性能。所有这些操作都减少扫描的数据量和执行所需的时间。在使用预置容量时也建议使用这些操作,因为它们通常会减少执行查询所花费的时间。
问:查询失败时,Athena 是否会收费?
采用按查询计费,您无需为失败的查询付费。
问:如果取消查询,Athena 是否会收费?
可以。如果取消查询,您需要为取消查询前已扫描的数据量付费。
问:Athena 还有其他收费项目吗?
Athena 直接从 S3 查询数据,因此,系统会针对您的源数据按 S3 费率收费。当 Athena 运行查询时,它会将结果存储在您选择的 S3 存储桶中。然后,您需要为这些结果集按标准 S3 费率付费。建议您监控这些存储桶,使用生命周期策略来控制保留多少数据。
问:使用 AWS Glue 数据目录是否需要付费?
可以。您需要单独支付使用 Data Catalog 的费用。要了解有关 Data Catalog 定价的更多信息,请查看 AWS Glue 定价页面。
Amazon Athena for Apache Spark
问:什么是 Amazon Athena for Apache Spark?
Athena 支持 Apache Spark 框架,使数据分析师和数据工程师能够获得 Athena 的交互式、完全托管的体验。Apache Spark 是一种热门的开源分布式处理系统,经过增强,适用于任何数据规模的快速分析工作负载,可提供丰富的开源库系统。现在,您可以在 Athena 控制台中使用简化的笔记本体验或通过 Athena API,以富有表现力的语言(例如 Python)构建 Spark 应用程序。您可以查询来自各种来源的数据,将多个计算链接在一起,并可视化其分析结果。对于交互式 Spark 应用程序,您的等待时间更短,效率更高,因为 Athena 可以在一秒钟内开始运行应用程序。客户可以获得简化的、专门构建的 Spark 体验,最大限度地减少版本升级、性能调整和与其他 AWS 服务集成所需的工作。
问:为什么我应该使用 Athena for Apache Spark?
如果您需要交互式、完全托管的分析体验以及与 AWS 服务的紧密集成,请使用 Athena for Apache Spark。您可以使用 Spark 在 Athena 中使用熟悉的、富有表现力的语言(例如 Python)和不断增长的 Spark 资源包环境执行分析。您还可以通过 Athena API 进入他们的 Spark 应用程序,或者进入 Athena 控制台中的简化笔记本,并在一秒钟内开始运行 Spark 应用程序,而无需设置和调整底层基础设施。与 Athena 的 SQL 查询功能一样,Athena 也可以提供完全托管的 Spark 体验,并能自动处理性能调优、机器配置和软件补丁,因此您无需担心与版本升级保持同步的问题。此外,Athena 还与 AWS 系统中的其他分析服务(如 Data Catalog)紧密集成。因此,您可以通过引用 Data Catalog 中的表在 S3 数据湖中的数据上创建 Spark 应用程序。
问:如何开始使用 Athena for Apache Spark?
要开始使用 Athena for Apache Spark,您可以在 Athena 控制台中启动笔记本或使用 AWS Command Line Interface (CLI) 或 Athena API 来启动会话。在您的笔记本中,您可以开始使用 Python 进入和关闭 Spark 应用程序。Athena 还与 Data Catalog 集成,因此您可以使用目录中引用的任何数据来源,包括直接在 S3 数据湖中的数据。借助笔记本,您现在可以查询来自各种来源的数据,将多个计算链接在一起,并可视化他们的分析结果。在您的 Spark 应用程序上,您可以在 Athena 控制台中检查执行状态并查看日志和执行历史记录。
问:Athena 基于哪个 Spark 版本?
Athena for Apache Spark 基于稳定的 Spark 3.2 版本。作为一个完全托管的引擎,Athena 将提供 Spark 的自定义版本,并将以向后兼容的方式自动处理大多数 Spark 版本更新,无需您的参与。
问:Athena for Apache Spark 如何定价?
您只需为 Apache Spark 应用程序运行所需的时间付费。我们根据用于运行 Apache Spark 应用程序的数据处理单元(DPU)的数量向您收取小时费率。单个 DPU 提供 4 个 vCPU 和 16 GB 内存。您将按 1 秒的增量计费,四舍五入到最接近的分钟数。
当您通过在 Athena 控制台上启动笔记本或使用 Athena API 来启动 Spark 会话时,系统会为您的应用程序预配置两个节点:一个笔记本节点,充当笔记本用户界面的服务器;一个 Spark 驱动程序节点,协调该节点 Spark 应用程序并与所有 Spark Worker 节点通信。Athena 将在会话期间向您收取驱动程序和 Worker 节点的费用。Amazon Athena 在控制台上提供笔记本作为用户界面,用于创建、提交和执行 Apache Spark 应用程序,并免费提供给您。Athena 不对 Spark 会话期间使用的笔记本节点收费。
何时使用 Athena 与其他大数据服务
Amazon Athena 和 Amazon Redshift 无服务器用于解决不同的需求和使用案例,即使这两项服务都是无服务器且支持 SQL 用户的。
EMR Serverless 是在云中运行 Spark 和 Hive 应用程序的最简单方法,也是业界唯一的无服务器 Hive 解决方案。借助 EMR Serverless,您可以消除对集群进行优化、大小调整、保护、修补和管理的运营开销,并且只需为您的应用程序实际使用的资源付费。借助 EMR 的性能优化运行时,您可以获得比标准开源快 2 倍以上的性能,因此您的应用程序运行速度更快,并降低计算成本。EMR 的性能优化运行时与标准开源 100% API 兼容,因此您无需重写应用程序即可在 EMR 上运行它们。您也不需要深厚的 Spark 专业知识来打开它们,因为它们是默认打开的。EMR 提供了在 EMR 集群、EKS 集群或 EMR Serverless 上运行应用程序的选项。EMR 集群适用于需要最大程度地控制和灵活地运行其应用程序的客户。借助 EMR 集群,客户可以选择 EC2 实例类型、自定义 Amazon Linux Image AMI、自定义 EC2 实例配置、自定义和扩展开源框架以及在集群实例上安装额外的自定义软件。EKS 上的 EMR 适用于希望在 EKS 上实现标准化以跨应用程序管理集群或在同一集群上使用不同版本开源框架的客户。EMR Serverless 适用于希望避免管理和操作集群,只希望使用开源框架运行应用程序的客户。
Athena SQL 查询可以调用 Amazon SageMaker 上部署的 ML 模型。您可以指定它们想要存储这些 Athena SQL 查询结果的 S3 位置。