Amazon Athena 上的 Apache Spark 入门 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Athena 上的 Apache Spark 入门

要开始在 Amazon Athena 上使用 Apache Spark,您必须先创建一个支持 Spark 的工作组。切换到工作组后,您可以创建笔记本或打开现有笔记本。打开 Athena 中的笔记本后,会自动为其启动一个新会话,您可以直接在 Athena 笔记本编辑器中进行处理。

注意

在尝试创建笔记本之前,请务必创建启用 Spark 的工作组。

在 Athena 中创建启用 Spark 的工作组

您可以在 Athena 中使用工作组对用户、团队、应用程序或工作负载进行分组,并跟踪成本。要在 Amazon Athena 中使用 Apache Spark,您需要创建一个使用 Spark 引擎的 Amazon Athena 工作组。

注意

启用 Apache Spark 的工作组可以使用 Athena 笔记本编辑器,但不能使用 Athena 查询编辑器。只有 Athena SQL 工作组可以使用 Athena 查询编辑器。

在 Athena 中创建启用 Spark 的工作组
  1. 打开 Athena 控制台,网址为 https://console.aws.amazon.com/athena/

  2. 如果控制台导航窗格不可见,请选择左侧的扩展菜单。

    
                            选择扩展菜单。
  3. 在导航窗格中,选择 Workgroups(工作组)。

  4. Workgroups(工作组)页面中,选择 Create workgroup(创建工作组)。

  5. Workgroup name(工作组名称)中,输入您的 Apache Spark 工作组名称。

  6. (可选)对于 Description(描述),输入工作组的描述。

  7. 对于 Analytics engine(分析引擎),选择 Apache Spark

    注意

    创建工作组后,无法更改工作组的分析引擎类型。例如,无法将 Athena 引擎版本 3 工作组更改为 PySpark 引擎版本 3 工作组。

  8. 在本教程中,请选择 Turn on example notebook(打开示例笔记本)。此可选功能将向工作组添加名为 example-notebook-random_string 的示例笔记本,并添加笔记本用于在账户中创建、显示和删除特定数据库和表的 Amazon Glue 相关权限,并在 Amazon S3 中添加示例数据集的读取权限。要查看添加的权限,请选择 View additional permissions details(查看其他权限详细信息)。

    注意

    运行示例笔记本可能会产生一些额外费用。

  9. 对于 Additional configuration(其他配置),执行以下操作之一:

    • 使用 Use defaults(使用默认值)设置。此选项为默认选项,可帮助您开始使用启用 Spark 的工作组。使用此选项,Athena 会在 Amazon S3 中为您创建 IAM 角色和计算结果位置。IAM 角色的名称和要创建的 S3 存储桶位置将在 Additional configurations(其他配置)标题下方的复选框中显示。

    • 禁用 Use defaults(使用默认值)设置,然后继续执行 指定您自己的工作组配置 一节中的步骤,以手动配置工作组。

  10. (可选)Tags(标签)– 使用此选项可向工作组添加标签。有关更多信息,请参阅 为 Athena 资源添加标签

  11. 选择 Create workgroup (创建工作组)。系统将显示一条消息通知您工作组已成功创建,并且该工作组将在工作组列表中显示。

指定您自己的工作组配置

如果要为笔记本指定自己的 IAM 角色以及计算结果位置,请按照本节中的步骤操作。如果您为 Additional configurations(其他配置)选项选择了 Use defaults(使用默认值),请跳过本节并直接转至 打开笔记本资源管理器并切换工作组

以下过程假定您已完成上一节中 To create a Spark enabled workgroup in Athena(在 Athena 中创建启用 Spark 的工作组)过程的步骤 1 至 9。

指定您自己的工作组配置
  1. 如果要创建或使用您自己的 IAM 角色或配置笔记本加密,请扩展 IAM role configuration(IAM 角色配置)。

    • 对于 Service Role(服务角色),选择以下选项之一:

      • 创建服务角色 – 选择此选项,Athena 将为您创建服务角色。要查看角色授予的权限,请选择 View permission details(查看权限详细信息)。

      • 选择现有服务角色 – 从下拉菜单中选择一个现有角色。所选角色必须包含第一个选项中的权限。有关启用笔记本的工作组的权限的更多信息,请参阅 对启用 Spark 的工作组进行故障排除

    • 对于 Notebook and calculation code encryption key management(笔记本和计算代码加密密钥管理),选择下列选项之一:

      • 归 Amazon Athena 所有 – Amazon KMS 密钥由 Amazon Athena 拥有和管理。使用此密钥不会产生额外的费用。

      • 对称密钥存储在账户中,由您拥有和管理 – 对于此选项,执行下列操作之一:

        • 要使用现有密钥,请使用搜索框选择 Amazon KMS 或输入密钥 ARN。

        • 要在 Amazon KMS 控制台中创建密钥,选择创建 Amazon KMS 密钥。执行角色必须具有使用您创建的密钥的权限。

      重要

      更改工作组的 Amazon KMS key 后,在更新之前托管的笔记本仍会引用旧的 KMS 密钥,而更新之后托管的笔记本将使用新的 KMS 密钥。要更新旧笔记本以引用新的 KMS 密钥,请导出每个旧笔记本然后导入。如果在将旧笔记本引用更新为新 KMS 密钥之前删除了旧 KMS 密钥,则旧笔记本将无法解密且无法恢复。

      此行为也适用于别名的更新,别名是 KMS 密钥的易记名称。更新 KMS 密钥别名以指向新的 KMS 密钥后,在别名更新之前托管的笔记本仍会引用旧的 KMS 密钥,而在别名更新之后托管的笔记本会使用新的 KMS 密钥。在更新 KMS 密钥或别名之前,请考虑以下几点。

  2. 要指定您自己的计算结果设置,请展开 Calculation result settings(计算结果设置),然后从以下选项中进行选择。

    • 创建新的 S3 存储桶 – 此选项会在账户中为计算结果创建 Amazon S3 存储桶。存储桶名称的格式为 account_id-region-athena-results-bucket-alphanumeric_id,使用的设置为:禁用 ACL、阻止公有访问、禁用版本控制和强制存储桶拥有者。

    • 选择现有 S3 位置 – 对于此选项,请执行以下操作:

      • 在搜索框中输入一个现有位置的 S3 路径,或选择 Browse S3(浏览 S3)以从列表中选择一个存储桶。

        注意

        在 Amazon S3 中选择现有位置时,请勿向该位置附加正斜杠 (/)。这样操作会导致指向 calculation details page(计算详细信息页面)上计算结果位置的链接指向错误的目录。如果出现这种情况,请编辑工作组的结果位置以删除尾部正斜杠。

      • (可选)选择 View(查看)以打开 Amazon S3 控制台的 Buckets(存储桶)页面,您可以在其中查看有关所选现有存储桶的更多信息。

      • (可选)在 Expected bucket owner(预期存储桶拥有者)中,输入您希望其成为查询结果输出位置存储桶拥有者的 Amazon 账户 ID。建议您尽可能选择此选项作为额外的安全措施。如果存储桶拥有者的账户 ID 与您指定的 ID 不匹配,则输出到存储桶的尝试将会失败。有关更多信息,请参阅《Amazon S3 用户指南》中的使用存储桶拥有者条件验证存储桶所有权

      • (可选)如果您的计算结果位置属于其他账户所有,并且您希望向其他账户授予对查询结果的完全控制权,请选择 Assign bucket owner full control over query results(为存储桶拥有者分配对查询结果的完全控制权)。

  3. (可选)选择 Encrypt calculation results(加密计算结果),然后选择以下选项之一:

    • SSE_S3 – 这是 S3 托管的服务器端加密密钥。

    • SSE_KMS – 您提供的密钥。对于选择 Amazon KMS 密钥,可以选择以下选项之一:

      • 使用 Amazon 拥有的密钥 – 使用 Amazon 拥有并为您管理的密钥。

      • 选择其他 Amazon KMS 密钥(高级) – 选择或创建密钥。

        • 要使用现有密钥,请使用搜索框选择 Amazon KMS 或输入密钥 ARN。

        • 要在 KMS 控制台中创建密钥,选择创建 Amazon KMS 密钥。在 KMS 控制台中完成密钥创建后,返回 Athena 控制台中的创建工作组页面,然后使用选择 Amazon KMS 密钥或输入 ARN 搜索框选择您刚刚创建的密钥。

  4. (可选)Other settings(其他设置)– 扩展此选项可启用或禁用工作组的 Publish CloudWatch metrics(发布 CloudWatch 指标)选项。在默认情况下,该字段会被选中。有关更多信息,请参阅 使用 CloudWatch 指标监控 Apache Spark 计算

  5. (可选)Tags(标签)– 使用此选项可向工作组添加标签。有关更多信息,请参阅 为 Athena 资源添加标签

  6. 选择 Create workgroup (创建工作组)。系统将显示一条消息通知您工作组已成功创建,并且该工作组将在工作组列表中显示。

打开笔记本资源管理器并切换工作组

您必须先切换到该工作组,然后才能使用刚刚创建的启用 Spark 的工作组。要切换启用 Spark 的工作组,可以使用“笔记本资源管理器”或“笔记本编辑器”中的 Workgroup(工作组)选项。

注意

开始之前,请确保您的浏览器不会阻止第三方 Cookie。浏览器的默认设置,或用户启用的设置阻止第三方 Cookie 时,都将阻止笔记本启动。有关管理 Cookie 的更多信息,请参阅:

打开笔记本资源管理器并切换工作组
  1. 在导航窗格中,选择 Notebook explorer(笔记本资源管理器)。

  2. 使用控制台右上角的 Workgroup(工作组)选项来选择您创建的启用 Spark 的工作组。示例笔记本将在笔记本列表中显示。

    您可以通过以下方式使用笔记本资源管理器:

    • 选择笔记本的链接名称,在新会话中打开该笔记本。

    • 要重命名、删除或导出笔记本,请使用 Actions(操作)菜单。

    • 要导入笔记本文件,请选择 Import file(导入文件)。

    • 要创建笔记本,请选择 Create notebook(创建笔记本)。

运行示例笔记本

示例笔记本从公开的纽约出租车旅行数据集查询数据。该笔记本包含展示了如何使用 Spark DataFrames、Spark SQL 和 Amazon Glue Data Catalog 的示例。

运行示例笔记本
  1. 在“笔记本资源管理器”中,选择示例笔记本的链接名称。

    这将通过默认参数启动笔记本会话,并在笔记本编辑器中打开笔记本。系统将显示一条消息,通知您已使用默认参数(最大 DPU 数为 20)启动新的 Apache Spark 会话。

  2. 要按顺序运行单元格并查看结果,请为笔记本中的每个单元格选择一次 Run(运行)按钮。

    • 向下滚动以查看结果以及新单元格。

    • 对于包含计算结果的单元格,进度栏会显示完成百分比、所用时间和剩余时间。

    • 示例笔记本将在您的账户中创建示例数据库和表。作为清除步骤,最后一个单元格会将其删除。

注意

如果您在示例笔记本中更改文件夹、表或数据库名称,请确保这些更改会反映在您使用的 IAM 角色中。否则,笔记本可能因权限不足而无法运行。

编辑会话详细信息

在启动笔记本会话后,您可以编辑会话详细信息,例如表格式、加密、会话空闲超时以及要使用的数据处理单元(DPU)的最大并发数。DPU 是对处理能力的相对度量,它由 4 个 vCPU 的计算容量和 16GB 内存组成。

编辑会话详细信息
  1. 在笔记本编辑器中,从右上角的 Session(会话)菜单中选择 Edit session(编辑会话)。

  2. 编辑会话详细信息对话框的 Spark 属性部分中,选择或输入以下选项的值:

    • 其他表格式 - 选择 Linux Foundation Delta LakeApache HudiApache Iceberg自定义

      • 对于 DeltaHudiIceberg 表选项,对应表格式所需的表属性将自动在在表中编辑在 JSON 中编辑选项中提供。有关使用这些表格式的更多信息,请参阅 在 Amazon Athena for Apache Spark 中使用非 Hive 表格式

      • 要为自定义或其他表类型添加或移除表属性,使用在表中编辑在 JSON 中编辑选项。

      • 对于在表中编辑选项,选择添加属性添加属性,或者选择移除移除属性。要输入属性名称及其值,使用框。

      • 对于在 JSON 中编辑选项,使用 JSON 文本编辑器直接编辑配置。

        • 要将 JSON 文本复制到剪贴板,选择复制

        • 要从 JSON 编辑器中移除所有文本,选择清除

        • 要配置换行或为 JSON 编辑器选择颜色主题,选择设置(齿轮)图标。

    • 打开 Spark 加密 - 选择此选项可加密写入磁盘并通过 Spark 网络节点发送的数据。有关更多信息,请参阅 启用 Apache Spark 加密

  3. 编辑参数部分中,选择或输入以下选项的值:

    • Session idle timeout(会话空闲超时)– 选择或输入一个介于 1 和 480 分钟之间的值。默认值为 20。

    • Coordinator size(协调器大小)– 协调器是一种特殊的执行程序,负责编排处理工作并管理笔记本会话中的其他执行程序。当前,1 DPU 是默认且唯一可能的值。

    • Executor size(执行程序大小)– 执行程序是笔记本会话可以向 Athena 请求的最小计算单位。当前,1 DPU 是默认且唯一可能的值。

    • Max concurrent value(最大并发值)– 可以同时运行的最大 DPU 数。默认值为 20,最小值为 3,最大值为 60。增加此值不会自动分配其他资源,但 Athena 会在计算负载需要以及资源可用时尝试分配指定的最大值。

  4. 选择保存

  5. 出现 Confirm edit(确认编辑)提示时,选择 Confirm(确认)。

    Athena 会保存笔记本并使用您指定的参数开始新会话。笔记本编辑器中的横幅将通知您已通过修改后的参数开始新会话。

    注意

    Athena 会记住笔记本的会话设置。如果您编辑会话的参数然后终止会话,Athena 会在您下次启动笔记本会话时使用您配置的会话参数。

查看会话和计算的详细信息

运行笔记本后,您可以查看会话和计算的详细信息。

查看会话和计算的详细信息
  1. 在右上角的 Session(会话)菜单中,选择 View details(查看详细信息)。

    • Current session(当前会话)选项卡会显示有关当前会话的信息,包括会话 ID、创建时间、状态和工作组。

    • History(历史记录)选项卡会列出先前会话的会话 ID。要查看先前会话的详细信息,请选择 History(历史记录)选项卡,然后在列表中选择会话 ID。

    • Calculations(计算)部分将在会话中运行的计算列表显示。

  2. 要查看计算的详细信息,请选择计算 ID。

  3. Calculation details(计算详细信息)页面上,可以执行以下操作:

    • 要查看计算代码,请参阅 Code(代码)部分。

    • 要查看计算结果,请选择 Results(结果)选项卡。

    • 要以文本格式下载显示的结果,请选择 Download results(下载结果)。

    • 要在 Amazon S3 中查看有关计算结果的信息,请选择 View in S3(在 S3 中查看)。

终止会话

终止笔记本会话
  1. 在笔记本编辑器中,从右上角的 Session(会话)菜单中选择 Terminate(终止)。

  2. 出现 Confirm session termination(确认终止会话)提示时,选择 Confirm(确认)。笔记本已保存,您将返回到笔记本编辑器。

注意

在笔记本编辑器中关闭笔记本选项卡并不会终止活动笔记本的会话。要确保会话已终止,请依次选择 Session(会话)、Terminate(终止)选项。

创建您自己的笔记本

创建启用 Spark 的 Athena 工作组后,您可以创建自己的笔记本。

创建笔记本
  1. 如果控制台导航窗格不可见,请选择左侧的扩展菜单。

  2. 在 Athena 控制台导航窗格中,选择 Notebook explorer(笔记本资源管理器)或 Notebook editor(笔记本编辑器)。

  3. 请执行以下操作之一:

    • Notebook explorer(笔记本资源管理器)中,选择 Create notebook(创建笔记本)。

    • Notebook editor(笔记本编辑器)中,选择 Create notebook(创建笔记本),或选择加号图标(+)添加笔记本。

  4. Create notebook(创建笔记本)对话框中,在 Notebook name(笔记本名称)中输入名称。

  5. (可选)展开 Spark 属性,然后为以下选项选择或输入值:

    • 其他表格式 - 选择 Linux Foundation Delta LakeApache HudiApache Iceberg自定义

      • 对于 DeltaHudiIceberg 表选项,对应表格式所需的表属性将自动在在表中编辑在 JSON 中编辑选项中提供。有关使用这些表格式的更多信息,请参阅 在 Amazon Athena for Apache Spark 中使用非 Hive 表格式

      • 要为自定义或其他表类型添加或移除表属性,使用在表中编辑在 JSON 中编辑选项。

      • 对于在表中编辑选项,选择添加属性添加属性,或者选择移除移除属性。要输入属性名称及其值,使用框。

      • 对于在 JSON 中编辑选项,使用 JSON 文本编辑器直接编辑配置。

        • 要将 JSON 文本复制到剪贴板,选择复制

        • 要从 JSON 编辑器中移除所有文本,选择清除

        • 要配置换行或为 JSON 编辑器选择颜色主题,选择设置(齿轮)图标。

    • 打开 Spark 加密 - 选择此选项可加密写入磁盘并通过 Spark 网络节点发送的数据。有关更多信息,请参阅 启用 Apache Spark 加密

  6. (可选)展开 Session parameters(会话参数),然后为以下选项选择或输入值:

    • Session idle timeout(会话空闲超时)– 选择或输入一个介于 1 和 480 分钟之间的值。默认值为 20。

    • Coordinator size(协调器大小)– 协调器是一种特殊的执行程序,负责编排处理工作并管理笔记本会话中的其他执行程序。当前,1 DPU 是默认且唯一可能的值。DPU(数据处理单元)是对处理能力的相对度量,它由 4 个 vCPU 的计算容量和 16 GB 的内存组成。

    • Executor size(执行程序大小)– 执行程序是笔记本会话可以向 Athena 请求的最小计算单位。当前,1 DPU 是默认且唯一可能的值。

    • Max concurrent value(最大并发值)– 可以同时运行的最大 DPU 数。默认值为 20,最大值为 60。增加此值不会自动分配其他资源,但 Athena 会在计算负载需要以及资源可用时尝试分配指定的最大值。

  7. 选择创建。笔记本将在笔记本编辑器的新会话中打开。

打开先前创建的笔记本

打开先前创建的笔记本
  1. 如果控制台导航窗格不可见,请选择左侧的扩展菜单。

  2. 在 Athena 控制台导航窗格中,选择 Notebook editor(笔记本编辑器)或 Notebook explorer(笔记本资源管理器)。

  3. 请执行以下操作之一:

    • Notebook editor(笔记本编辑器)中,在 Recent notebooks(最近使用的笔记本)或 Saved notebooks(保存的笔记本)列表中选择一个笔记本。笔记本将在新会话中打开。

    • Notebook explorer(笔记本资源管理器)中,在列表中选择笔记本的名称。笔记本将在新会话中打开。

有关管理笔记本文件的更多信息,请参阅 管理笔记本文件