为 Jupyter 和 Amazon Glue Studio 笔记本配置 Amazon Glue 交互式会话 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 Jupyter 和 Amazon Glue Studio 笔记本配置 Amazon Glue 交互式会话

Jupyter 魔术命令简介

Jupyter 魔术命令是可以在单元格开头或作为整个单元格正文运行的命令。魔术命令从用于行魔术命令的 % 和用于单元格魔术命令的 %% 开启。行魔术命令(例如 %region%connections)可以使用单元格中的多个魔术命令运行,也可以使用单元格正文中包括的代码运行,如下例所示。

%region us-east-2 %connections my_rds_connection dy_f = glue_context.create_dynamic_frame.from_catalog(database=‘rds_tables’, table_name=‘sales_table’)

单元格魔术命令必须使用整个单元格,并且可以使命令跨越多行。%%sql 的例子如下所示。

%%sql select * from rds_tables.sales_table

Jupyter 的 Amazon Glue 交互式会话支持魔术命令

以下是您可以与 Jupyter 笔记本的 Amazon Glue 交互式会话搭配使用的魔术命令。

会话魔术命令

名称 类型 描述
%help 不适用 返回所有魔术命令的描述和输入类型列表。
%profile 字符串 在 Amazon 配置中指定要用作凭证提供程序的配置文件。
%region 字符串 指定 Amazon Web Services 区域;在其中初始化会话。~/.aws/configure. 的默认值
%idle_timeout Int 非活动的分钟数,在此之后会话将超时。默认空闲超时值为 2880 分钟(48 小时)。
%session_id 字符串 返回正在运行的会话的会话 ID。如果提供了字符串,则该字符串将设置为下一个正在运行的会话的会话 ID。
%session_id_prefix 字符串 以格式 [session_id_prefix]-[session_id] 定义在所有会话 ID 之前的字符串。如果未提供会话 ID,则将生成随机 UUID。
%status 返回当前 Amazon Glue 会话的状态,包括其持续时间、配置和执行用户/角色。
%stop_session 停止当前会话。
%list_sessions 按名称和 ID 列出当前正在运行的所有会话。
%glue_version 字符串 本次会话使用的 Glue 版本。目前,唯一有效的选项为 2.0 和 3.0。默认值是 2.0。
%streaming 字符串 将会话类型更改为 Amazon Glue 串流。
%etl 字符串 将会话类型更改为 Amazon Glue ETL。

Glue Config 魔术命令

名称 类型 描述
%%configure 词典 指定一个 JSON 格式的词典,其中包含会话的所有配置参数。每个参数可以在此处指定,也可以通过单独的魔术命令指定。
%iam_role 字符串 指定用于执行会话的 IAM 角色 ARN。~/.aws/configure 的默认值
%number_of_workers int 任务运行时分配的定义 worker_type 的工件数量。还必须设置 worker_type。默认 number_of_workers 为 5。
%worker_type 字符串 标准,G.1X 或 G.2X。还必须设置 number_of_workers。worker_type 默认为 G.1X。
%security_config 字符串 定义用于此会话的安全配置。
%connections 列表 指定要在会话中使用的连接的逗号分隔列表。
%additional_python_modules 列表 要包含在集群中的其他 Python 模块的逗号分隔列表(可以来自 Pypi 或 S3)。
%extra_py_files 列表 Simple Storage Service (Amazon S3) 中其他 Python 文件的逗号分隔列表。
%extra_jars 列表 要包含在集群中的其他 Jar 的逗号分隔列表。

操作魔术命令

名称 类型 描述
%%sql 字符串 运行 SQL 代码。首次 %%sql 魔术命令之后的所有行将作为 SQL 代码的一部分传递。

命名会话

$GLU; 交互式会话是 Amazon 资源并需要一个名称。每个会话的名称应具有唯一性,并且可能受 IAM 管理员的限制,有关更多信息,请参阅 使用 IAM 的交互式会话 Jupyter 内核会自动为您生成唯一的会话名称。但是,可以通过两种方式手动命名会话:

  1. 使用位于 ~.aws/config 的 Amazon Command Line Interface 配置文件。请参阅使用 Amazon Command Line Interface 设置 Amazon 配置

  2. 使用 %session_id_prefix 魔术命令。请参阅 为 Jupyter 和 Amazon Glue Studio 笔记本配置 Amazon Glue 交互式会话

会话名称的生成方式如下:

  • 提供前缀和 session_id 时:会话名称将为 {前缀}-{UUID}。

  • 未提供任何内容时:会话名称将为 {UUID}。

为会话名称添加前缀后,您能够在将会话列入 Amazon CLI 或控制台中时识别它们。

为交互式会话指定 IAM 角色

您必须指定 Amazon Identity and Access Management (IAM) 角色与使用交互式会话运行的 Amazon Glue ETL 代码一起使用。

该角色所需的IAM 权限与运行 Amazon Glue 任务所需的 IAM 权限相同。有关为 Amazon Glue 任务和交互式会话创建角色的更多信息,请参阅为 Amazon Glue 创建 IAM 角色

可通过以下两种方式指定 IAM 角色:

使用命名配置文件配置会话

Amazon Glue 交互式会话使用与 Amazon Command Line Interface 或 Boto3 相同的凭证。交互式会话优先采用并与命名配置文件搭配使用,该配置文件类似在 ~/.aws/config(Linux 和 macOS)或 %USERPROFILE%\.aws\config (Windows) 中找到的 Amazon CLI。有关更多信息,请参阅 Amazon Command Line Interface 的命名配置文件

交互式会话允许在配置文件中指定 Amazon Glue 服务角色和会话 ID 前缀,从而利用命名配置文件。要对配置文件角色进行配置,请为命名配置文件的 iam_role 密钥和/或 session_id_prefix 添加一行,如下所示。

[default] region=us-east-1 aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY glue_iam_role=arn:aws:iam::<AccountID>:role/<GlueServiceRole> session_id_prefix=<prefix_for_session_names> [user1] region=eu-west-1 aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY glue_iam_role=arn:aws:iam::<AccountID>:role/<GlueServiceRoleUser1> session_id_prefix=<prefix_for_session_names_for_user1>

如果您有生成凭证的自定义方法,还可以将配置文件配置为使用 credential_process 文件中的 ~/.aws/config 参数。例如:

[profile developer] region=us-east-1 credential_process = "/Users/Dave/generate_my_credentials.sh" --username helen

您可以找到有关通过 credential_process 参数获取凭证的更多详情,请参阅此处:使用外部进程获取凭证

如果在使用的配置文件中未设置区域或 iam_role,则必须在运行的第一个单元格中使用 %region%iam_role 魔术命令进行指定。