Amazon Athena 常见问题
一般性问题
什么是 Amazon Athena?
Athena 是一种交互式分析服务,可以使用 SQL 轻松地分析 Amazon Simple Storage Service(S3)中的数据。Athena 是无服务器式服务,因此您无需设置或管理基础设施即可马上开始分析数据。您甚至无需将数据加载到 Athena 中,因为它可以直接处理 Amazon S3 中存储的数据。Amazon Athena for SQL 使用 Trino 和Presto 并为标准 SQL 提供完整的支持,可处理 CSV、JSON、Apache ORC、Apache Parquet 和 Apache Avro 等各种标准数据格式。Athena for Apache Spark 支持 SQL,并允许您使用 Apache Spark,这是一种用于大数据工作负载的开源分布式处理系统。首先,登录 Athena 管理控制台并开始使用查询编辑器或笔记本与您的数据进行交互。
Athena 有何用途?
借助 Athena,您可以分析存储在 S3 和 30 个不同数据来源中的数据,包括本地数据源或其他云系统。您可以使用 ANSI SQL 或 Python,通过 Athena 运行交互式分析,而无需将数据聚合或加载到 Athena 中。Athena 能够处理非结构化、半结构化和结构化的数据集。示例包括 CSV、JSON、Avro 或列式数据格式,如 Parquet 和 ORC。Amazon Athena for SQL 与 Amazon QuickSight 集成以可视化您的数据或创建控制面板。此外,您还可以使用 Athena 生成报表,或借助商业智能工具或 SQL 客户端(通过 ODBC 或 JDBC 驱动程序进行连接)浏览数据。
如何开始使用 Athena?
要开始使用 Athena,您只需登录到 Athena 的 AWS 管理控制台,然后通过在控制台中编写数据定义语言(DDL)语句或使用创建表向导来创建架构即可。然后,您可以使用内置的查询编辑器开始查询数据。Athena 直接从 S3 查询数据,因此无需加载数据。
Amazon Athena for SQL
如何访问 Athena?
Athena for SQL 采用了何种基础技术?
Athena for SQL 使用完全支持标准 SQL 的 Trino,可处理 CSV、JSON、ORC、Avro 和 Parquet 等各种标准数据格式。Athena 能够处理复杂的分析,包括大型联接、开窗函数和数组。借助基于 Trino 构建的 Amazon Athena SQL 引擎版本 3,我们继续提高性能并提供新功能,类似于我们在基于 Presto 构建的 Amazon Athena 引擎版本 2 上的方法。v3 最令人兴奋的方面之一是它对开源软件管理的新持续集成方法,这将使客户了解 Trino 和 PrestoDB 项目的最新信息。我们的目标是保持在开源 Trino 发布后的 60-90 天内。Athena 开发团队积极为这些开源代码库贡献错误修复和安全性、可扩展性、性能和功能增强,使任何使用 Trino、Presto 和 Apache Iceberg 的人员都可以从团队的贡献中受益。
Athena for SQL 如何存储表定义和架构?
Athena for SQL 使用托管的 AWS Glue Data Catalog 来存储有关您为 Amazon S3 中存储的数据创建的数据库和表的信息及架构。在提供 AWS Glue 的区域,您可以升级到将 Data Catalog 与 Athena 结合使用。在不提供 AWS Glue 的区域内,Athena 使用内部目录。
您可以使用 DDL 语句或通过 AWS 管理控制台修改目录。您定义的任何架构都会自动保存,除非明确将其删除。Athena 使用读时模式技术,这意味着表定义在应用查询时会应用于您存储在 S3 中的数据。无需加载或转换数据。您可以删除表定义和架构,这不会影响存储在 S3 上的基础数据。
我为什么应该升级到 Data Catalog?
AWS Glue 是一种完全托管的提取、转换、加载(ETL)服务。AWS Glue 有三个主要组件:1)爬网程序,用于自动扫描数据来源、识别数据格式和推断架构;2)完全托管的 ETL 服务,支持您转换数据并将其移动至多个目标;以及 3)数据目录,用于存储有关 S3 或者符合 ODBC- 或 JDBC 规范的数据存储中所存储的数据库和表的元数据信息。要发挥 AWS Glue 的优势,您必须从使用 Athena 的内部 Data Catalog 升级为使用 Glue Data Catalog。
升级到 Data Catalog 的优势包括:
- 统一的元数据存储库: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 可以自动抓取您的数据来源、识别数据格式并提出架构和转换建议。抓取程序可帮助自动创建表并自动加载分区。
要了解有关 Data Catalog 的更多信息,请查看 AWS Glue 网页。
是否有升级到 Data Catalog 的分步流程
符合。有关分步流程,请查看 Amazon Athena 用户指南:与 AWS Glue 集成。
Athena 在哪些区域可用?
有关按区域划分的 Athena 服务可用性的详细信息,请查看 AWS 区域性服务列表。
Athena 有哪些服务限制?
要了解有关服务限制的更多信息,请查看 Amazon Athena 用户指南:服务限额。
创建表、数据格式和分区
如何在 S3 上为我的数据创建表和架构?
Athena 使用 Apache Hive DDL 定义表。您可以使用 Athena 控制台、通过 ODBC 或 JDBC 驱动程序、通过 API 或使用 Athena 创建表向导来运行 DDL 语句。如果将 Data Catalog 与 Athena 配合使用,您还可以使用 AWS Glue 爬网程序来自动推断架构和分区。AWS Glue 爬网程序可连接到数据存储,使用分类器的优先级列表来提取数据和其他统计数据的架构,然后使用该元数据填充 Data Catalog。爬网程序可定期运行,以检测新数据的可用性以及现有数据的更改,包括表定义的更改。爬网程序会自动将新表、新分区以及新版本的表定义添加到现有表。您可以自定义 AWS Glue 爬网程序以对自己的文件类型进行分类。
当您在 Athena 中创建新的表架构时,架构将存储在数据目录中,并在运行查询时使用,但不会修改您存储在 S3 中的数据。Athena 采用称作“读时模式”的方法,它在您运行查询时将架构投射到数据。这减少了任何数据加载或转换的需要。了解有关创建表的更多信息。
Athena 支持哪些数据格式?
Athena 支持各种数据格式,如 CSV、TSV、JSON 或文本文件;此外,它还支持开源列格式,如 ORC 和 Parquet。Athena 还支持 Snappy、Zlib、LZO 和 GZIP 格式的压缩数据。您可以通过压缩、分区和使用列格式来提高性能并降低成本。
Athena 支持哪些数据类型?
Athena 支持简单数据类型(如 INTEGER、DOUBLE、VARCHAR)及复杂数据类型(如 MAPS、ARRAY、STRUCT)。
可以在 Athena 上运行 Hive 查询吗?
Athena 仅将 Hive 用于 DDL 以及表或分区的创建/修改和删除。有关受支持语句的完整列表,请查看 Amazon Athena 用户指南:DDL 语句。在 S3 上运行 SQL 查询时,Athena 使用 Trino 和 Presto。您可以运行符合 ANSI 标准的 SQL SELECT 语句来查询 S3 中的数据。
什么是 SerDe?
SerDe 表示串行器/解串器 (Serializer/Deserializer),它们是告诉 Hive 如何解释数据格式的库。Hive DDL 语句要求您指定 SerDe,以便系统知道如何解释您指向的数据。Athena 使用 SerDes 解释从 S3 读取的数据。SerDes 在 Athena 中的概念与在 Hive 中使用的概念相同。Amazon Athena 支持以下 SerDes:
- 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"
我可以将自己的 SerDe 添加到 Athena 吗?
目前,您无法向 Athena 添加自己的 SerDe。感谢您的反馈!如果您希望添加任何 SerDes,请与 Athena 团队(athena-feedback@amazon.com)联系。
如果我使用 Spark/Hive 创建了 Parquet/ORC 文件,我能否在 Athena 中查询它们?
可以。您可以在 Athena 中读取通过 Spark 创建的 Parquet 和 ORC 文件。
如果我有来自 Amazon Kinesis Data Firehose 的数据,如何使用 Athena 查询它?
如果您的 Kinesis 数据存储在 S3 中,则可以使用 Athena 进行查询。在 Athena 中为您的数据创建架构并开始查询。建议您将数据组织到分区中,以增强性能。您可以使用 ALTER TABLE DDL 语句添加 Data Firehose 创建的分区。了解有关分区数据的更多信息。
Athena 是否支持数据分区?
符合。您可以使用 Athena 在任何列上对数据进行分区。分区能够限制查询扫描的数据量,从而节省成本并提高性能。您可以在 CREATE TABLE 语句中使用 PARTITIONED BY 子句指定分区架构。 Amazon Athena 支持使用 AWS Glue Data Catalog 分区索引来优化查询计划并减少查询运行时间。当您查询包含大量分区的表时,Athena 会从 AWS Glue Data Catalog 中检索可用分区并确定您的查询需要哪些分区。随着新分区的增加,检索分区所需的时间也会增加,并可能导致查询运行时间增加。AWS Glue Data Catalog 允许客户创建分区索引,它可减少在具有数十万个分区的表上检索和筛选分区元数据所需的时间。
如何在 Athena 中向现有的表添加新数据?
如果您的数据已分区,则当 S3 上有新数据可用后,需要运行元数据查询(ALTER TABLE ADD PARTITION)以将此分区添加到 Athena。如果您的数据未分区,请将新数据(或文件)添加到现有前缀,以将数据自动添加到 Athena。了解有关分区数据的更多信息。
如果我在 S3 上已经有大量日志数据,可以使用 Athena 查询吗?
是的,Athena 可以轻松对现有日志数据运行标准 SQL 查询。Athena 直接从 S3 查询数据,因此无需移动或加载数据。使用 DDL 语句定义架构,然后开始查询数据。
查询、数据格式和多云
Athena 支持哪些类型的查询?
Athena 支持 ANSI SQL 查询。Athena 使用 Trino(一种开源的内存分布式 SQL 引擎),能够处理复杂的分析,包括大型联接、开窗函数和数组。
我可以将 QuickSight 与 Athena 配合使用吗?
符合。Athena 与 QuickSight 集成,因此您可以无缝可视化存储在 S3 中的数据。
问:Athena 是否支持其他商业智能(BI)工具和 SQL 客户端?
如何访问 Athena 支持的函数?
了解有关 Athena 支持的函数的更多信息。
如何提高查询性能?
您可以通过压缩、分区或将数据转换为列格式来提高查询性能。Athena 支持开源列数据格式,如 Parquet 和 ORC。将数据转换为压缩的列格式可降低成本,并通过减少 Athena 在运行查询时从 S3 扫描的数据来提高查询性能。
问:Athena 支持用户自定义函数(UDF)吗?
可以。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 示例。您可以将函数上传到 Lambda,然后在 Athena 查询中调用它。要开始使用,请参阅 Amazon Athena 用户指南:使用 Lambda 创建和部署 UDF。
Athena 将在一组数据集行上调用 UDF 以增强性能。
Athena 是否支持多云分析?
是的,Athena 提供了多个数据来源连接器,您可以使用这些连接器来分析其他云服务提供商和其他云存储服务中的数据,而无需移动或转换数据。数据来源连接器可用于 30 个数据来源,包括 Azure Synapse、Azure Data Lake Storage、Google BigQuery 和 Google Cloud Storage。详细了解适用于混合和多云环境的 AWS 解决方案。
联合查询
什么是联合查询?
如果您有 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 分析使用案例。有关支持的源列表,请参阅使用 Athena 数据来源连接器。
您还可以使用 Athena 数据连接器开发工具包创建自定义数据来源连接器并使用 Athena 来查询它。首先查看文档和连接器实现示例。
联合查询支持哪些使用案例?
通过 Athena,您可以运用现有的 SQL 知识,从广泛的数据来源中提取洞察,而无需学习一门新的语言,开发脚本来提取(和复制)数据,或管理基础设施。使用 Amazon Athena,您可以执行以下任务:
我可以将联合查询用于 ETL 吗?
Athena 将查询结果存储在 S3 中的一个文件中。这意味着您可以使用 Athena 让其他用户和应用程序能够使用联合数据。如果您想要使用 Athena 对数据执行分析而不重复查询基础源,请使用 Athena 的 CREATE TABLE AS 函数。您还可以使用 Athena 的 UNLOAD 函数查询数据并将结果以特定文件格式存储在 S3 上
数据来源连接器是如何工作的?
数据来源连接器是运行在 Lambda 上的一段代码,它在目标数据来源和 Athena 之间进行转换。当您使用数据来源连接器向 Athena 注册数据存储时,可以在联合数据存储上运行 SQL 查询。当查询在联合源上运行时,Athena 会调用 Lambda 函数并要求它运行特定于联合源的查询部分。要了解更多信息,请查看 Amazon Athena 用户指南:使用 Amazon 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 与其他大数据服务
Athena、Amazon EMR 和 Amazon Redshift 之间有什么区别?
查询服务(如 Athena)、数据仓库(如 Amazon Redshift)和复杂的数据处理框架(如 Amazon EMR)都可以满足不同的需求和使用案例。您只需要为任务挑选适当的工具即可。Amazon Redshift 为企业报告和商业智能工作负载提供最快的查询性能,这一点在涉及具有多个联接和子查询的复杂 SQL 查询方面尤为明显。与本地部署相比,Amazon EMR 简化了流程,使运行高度分布式处理框架(例如 Apache Hadoop、Spark 和 Presto)变得经济高效。Amazon EMR 非常灵活 - 您可以运行自定义的应用程序和代码,定义特定的计算、内存、存储和应用程序参数,以增强您的分析需求。Athena 提供了一种简单方式来对 S3 中的数据运行交互式查询,而无需设置或管理任何服务器。
Athena 的 SQL 支持与 Redshift 相比如何,我如何在这两种服务中选择?
Amazon Athena 和 Amazon Redshift 无服务器用于解决不同的需求和使用案例,即使这两项服务都是无服务器且支持 SQL 用户的。
凭借其能分离存储和计算的大规模并行处理(MPP)架构,以及机器学习主导的自动优化能力,Amazon Redshift 这样的数据仓库,无论是无服务器还是预置的,对于在任何规模的复杂 BI 和分析工作负载中追求最佳性价比的客户来说,都是一个不错的选择。Redshift 最适合驱动规模化分析以及海量、结构化和半结构化数据集。它适用于企业报告和商业智能工作负载,这一点在涉及具有多个联接和子查询的极为复杂的 SQL 查询方面尤为明显。Redshift 提供与 AWS 数据库、分析和 ML 服务的深度集成,因此客户可以通过最少的 ETL 和无代码方法就地访问数据,或者轻松地将数据提取或移动到仓库中以进行高性能分析。借助联合查询功能、Amazon Redshift Spectrum、与 Amazon Aurora、AWS Data Exchange、流数据服务等的集成,Redshift 让您可以使用来自多个来源的数据,与仓库中的数据相结合,并在此基础上进行分析和机器学习。Redshift 提供预配置和无服务器选项,无需管理基础设施即可轻松开始分析。
Athena 非常适合通过可扩展连接器框架(包括用于应用程序和本地或其他云分析系统的 30 多个开箱即用连接器)以及易于使用的 SQL 语法对 Amazon Simple Storage Service (S3) 或任何数据来源中的数据进行交互式分析和数据探索。Amazon Athena 建立在开源引擎和框架之上,如 Spark、Presto 和 Apache Iceberg,使客户可以灵活使用 Python 或 SQL,或处理开放数据格式。如果客户想使用开源框架和数据格式进行互动分析,Amazon Athena 是一个很好的起点。它是完全无服务器的,这意味着无需管理或设置基础设施。Athena 的开放性增加了数据的可移植性,允许我们的客户在不同的应用程序、程序甚至云服务提供商之间移动数据。它最近采用了一种新的持续集成方法来管理开源软件,该方法将不断集成来自 Trino、PrestoDB 和 Apache Iceberg 项目的最新功能。
应在何时使用 Amazon EMR 与 Athena?
Amazon EMR 的功能远不止运行 SQL 查询。借助 Amazon EMR,您可以为机器学习(ML)、图形分析、数据转换、流式处理数据以及您可以编写代码的几乎任何应用程序运行各种横向扩展的数据处理任务。如果需要使用自定义代码通过最新的大数据处理框架(如 Apache HBase、Spark、Hadoop 或 Presto)处理和分析大型数据集,请使用 Amazon EMR。通过 Amazon EMR,您可以全面掌控集群及其上安装的软件的配置。
如果需要对 S3 上的数据运行交互式 SQL 查询,又不想管理任何基础设施或集群,则应该使用 Athena。
Athena 的 Spark 支持与 EMR Serverless for Spark 相比如何? 客户何时会在 Athena 中使用 Spark 而不是 EMR Serverless?
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 适用于希望避免管理和操作集群,只希望使用开源框架运行应用程序的客户。
如果客户希望获得即时启动的交互式体验(类似于 Amazon Athena 的基于 SQL 的交互式查询体验),则可以选择 Amazon Athena for Apache Spark。Athena 中的客户体验针对运行时间短且需要亚秒级启动时间的交互式应用程序进行了优化。Amazon Athena 可自动处理性能调整、配置、软件修补和更新,无需客户参与。对于具有 PySpark 编程语言深度并且对数据探索和立即运行交互式分析感兴趣的数据分析师和开发人员,Amazon Athena for Apache Spark 提供了易于使用的体验。
可以使用 Athena 查询使用 Amazon EMR 处理的数据吗?
可以。Athena 支持许多与 Amazon EMR 相同的数据格式。Athena Data Catalog 与 Hive 元存储兼容。如果您正在使用 Amazon EMR 并且已有 Hive 元存储,则可以在 Athena 上执行 DDL 语句,然后即可开始查询数据,这不会对您的 Amazon EMR 作业产生任何影响。
Athena SQL 中的联合查询与其他 AWS 服务有何关联?
Athena 中的联合查询为您提供了一种跨各种关系、非关系和自定义数据来源运行 SQL 查询的统一方式。
Athena 中的 ML 与其他 AWS 服务有何关联?
Athena SQL 查询可以调用 Amazon SageMaker 上部署的 ML 模型。您可以指定它们想要存储这些 Athena SQL 查询结果的 S3 位置。