本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 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 notebook 的 Amazon Glue 交互式会话搭配使用的魔术命令。
会话魔术命令
名称 | Type | 描述 |
---|---|---|
%help
|
不适用 | 返回所有魔术命令的描述和输入类型列表。 |
%profile |
String | 在 Amazon 配置中指定要用作凭据提供者的配置文件。 |
%region |
String |
指定 Amazon Web Services 区域; 在其中初始化会话。 例如: |
%idle_timeout |
Int |
执行单元格后,非活动的分钟数,在此之后会话将超时。Spark ETL 会话的默认空闲超时值为默认超时,即 2880 分钟(48 小时)。对于其他会话类型,请查阅该会话类型的文档。 例如: |
%session_id |
不适用 | 返回正在运行的会话的会话 ID。 |
%session_id_prefix |
String |
以 [sessi on_id_prefix]-[session_id] 的格式定义一个字符串,该字符串将IDs位于所有会话之前。如果未提供会话 ID,则UUID会随机生成一个会话 ID。当您在 Amazon Glue Studio中运行 Jupyter Notebook 时,不支持此魔术命令。 例如: |
%status |
返回当前 Amazon Glue 会话的状态,包括其持续时间、配置和执行用户/角色。 | |
%stop_session
| 停止当前会话。 | |
%list_sessions |
按名称和 ID 列出当前正在运行的所有会话。 | |
%session_type |
String |
将会话类型设置为 Streaming ETL、或 Ray 之一。 例如: |
%glue_version |
String |
此会话使用的 Amazon Glue 版本。 例如: |
选择作业类型的魔术命令
名称 | Type | 描述 |
---|---|---|
%streaming |
String | 将会话类型更改为 Amazon Glue 串流。 |
%etl |
String | 将会话类型更改为Amazon GlueETL。 |
%glue_ray | String | 将 Ray 的会话类型更改 Amazon Glue 为。参见 Amazon Glue Ray 互动会话支持的魔法。 |
Amazon Glue for Spark 配置魔术命令
%%configure
魔术命令指定一个 json 格式的词典,其中包含会话的所有配置参数。每个参数可以在此处指定,也可以通过单独的魔术命令指定。
名称 | Type | 描述 |
---|---|---|
%%configure
|
词典 |
指定由会话的所有配置参数组成的JSON格式字典。每个参数可以在此处指定,也可以通过单独的魔术命令指定。 有关参数列表和如何使用 |
%iam_role |
String |
指定用于执行ARN会话的IAM角色。~/.aws/configure 的默认值。 例如: |
%number_of_workers |
Int |
任务运行时分配的定义 worker_type 的工件数量。还必须设置 例如: |
%additional_python_modules |
列出 |
要包含在集群中的其他 Python 模块的逗号分隔列表(可以来自 PyPI 或 S3)。 示例: |
%%tags |
String |
为会话添加标签。在大括号 {} 内指定标签。每个标签名称对都用圆括号 (" ") 括起来,并用逗号 (,) 分隔。
使用
|
%%assume_role |
字典 |
指定 json 格式的字典或IAM角色ARN字符串来创建用于跨账户访问的会话。 示例ARN:
凭证示例:
|
%%configure 单元格魔术命令参数
%%configure
魔术命令指定一个 json 格式的词典,其中包含会话的所有配置参数。每个参数可以在此处指定,也可以通过单独的魔术命令指定。有关 %%configure
单元格魔术命令支持的参数的示例,请参见下文。使用为作业指定的运行参数前缀 --
。例如:
%%configure { "--user-jars-first": "true", "--enable-glue-datacatalog": "false" }
有关作业参数的更多信息,请参阅 任务参数。
会话配置
参数 | 类型 | 描述 |
---|---|---|
max_retries |
Int | 在该作业失败时重试的最大次数。
|
max_concurrent_runs |
Int | 作业允许的最大并发运行数。 例如:
|
会话参数
参数 | 类型 | 描述 |
---|---|---|
--enable-spark-ui |
布尔值 | 启用 Spark 用户界面来监控和调试Amazon GlueETL作业。
|
--spark-event-logs-path |
String | 指定 Amazon S3 路径。使用 Spark 用户界面监控功能时。 例如:
|
--script_location |
String | 指定执行作业的脚本的 S3 路径。 例如:
|
--SECURITY_CONFIGURATION |
String | Amazon Glue 安全配置的名称 例如:
|
--job-language |
String | 脚本编程语言。接受“scala”或“python”的值。默认值为“python”。 例如:
|
--class |
String | 用作 Scala 脚本之入口点的 Scala 类。默认值为 null。 例如:
|
--user-jars-first |
布尔值 | 优先考虑客户在类路径中的额外JAR文件。默认值为 null。 例如:
|
--use-postgres-driver |
布尔值 | 在类路径中设置 Postgres JDBC 驱动程序的优先级,以避免与驱动程序发生冲突。 Amazon Redshift JDBC默认值为 null。 例如:
|
--extra-files |
List(string) | 在执行脚本之前,Amazon Glue 复制到脚本工作目录中的其他文件(如配置文件)的 Amazon S3 路径。 例如:
|
--job-bookmark-option |
String | 控制作业书签的行为。接受 ''、job-bookmark-enable '或job-bookmark-disable' '的值。job-bookmark-pause默认为 “job-bookmark-disable”。 例如:
|
--TempDir |
String | 指定可用作任务的临时目录的存储桶的 Amazon S3 路径。默认值为 null。 例如:
|
--enable-s3-parquet-optimized-committer |
布尔值 | 启用 EMRFS Amazon S3 优化的提交器将 Parquet 数据写入 Amazon S3。默认值为“true”。 例如:
|
--enable-rename-algorithm-v2 |
布尔值 | 将EMRFS重命名算法版本设置为版本 2。默认值为“true”。 例如:
|
--enable-glue-datacatalog |
布尔值 | 支持您将 Amazon Glue Data Catalog 用作 Apache Spark Hive 元存储。 例如:
|
--enable-metrics |
布尔值 | 为作业运行启用作业分析指标的集合。默认值为“false”。 例如:
|
--enable-continuous-cloudwatch-log |
布尔值 | 允许对 Amazon Glue 作业进行实时的连续日志记录。默认值为“false”。 例如:
|
--enable-continuous-log-filter |
布尔值 | 在创建或编辑为连续日志记录启用的作业时,指定标准筛选器或无筛选器。默认值为“true”。 例如:
|
--continuous-log-stream-prefix |
String | 为启用持续 Amazon CloudWatch 日志记录的作业指定自定义日志流前缀。默认值为 null。 例如:
|
--continuous-log-conversionPattern |
String | 为已启用连续日志记录的作业指定自定义转换日志模式。默认值为 null。 例如:
|
--conf |
String | 控制 Spark 配置参数。适用于高级使用案例。在每个参数之前使用 --conf 。例如:
|
timeout | Int | 确定 Spark 会话在终止语句之前应等待语句完成的最长时间。
|
Spark jobs(ETL和直播)魔法
名称 | Type | 描述 |
---|---|---|
%worker_type |
String | 标准,G.1X 或 G.2X。还必须设置 number_of_workers 。worker_type 默认为 G.1X。 |
%connections |
列出 |
指定要在会话中使用的连接的逗号分隔列表。 例如:
|
%extra_py_files |
列出 | Simple Storage Service (Amazon S3) 中其他 Python 文件的逗号分隔列表。 |
%extra_jars |
列出 | 要包含在集群中的其他 Jar 的逗号分隔列表。 |
%spark_conf |
String | 为您的会话指定自定义 Spark 配置。例如,%spark_conf spark.serializer=org.apache.spark.serializer.KryoSerializer 。 |
适用于 Ray 作业的魔术命令
名称 | Type | 描述 |
---|---|---|
%min_workers |
Int | 分配给 Ray 作业的工作线程的最小数量。默认值:1。 例如: |
%object_memory_head |
Int | 热启动后实例头节点上可用内存的百分比。最小值:0。最大值:100。 例如: |
%object_memory_worker | Int | 热启动后实例 Worker 节点上可用内存的百分比。最小值:0。最大值:100。 例如: |
操作魔术命令
名称 | Type | 描述 |
---|---|---|
%%sql |
String |
运行SQL代码。初始 例如: |
%matplot |
Matplotlib figure |
使用 matplotlib 库可视化您的数据。 例如:
|
%plotly |
Plotly figure |
使用 plotly 库可视化您的数据。 例如:
|
命名会话
Amazon Glue交互式会话是 Amazon 资源,需要一个名称。每个会话的名称应该是唯一的,并且可能会受到IAM管理员的限制。有关更多信息,请参阅 互动会话 IAM。Jupyter 内核会自动为您生成唯一的会话名称。但是,可以通过两种方式手动命名会话:
-
使用位于的 Amazon Command Line Interface 配置文件
~.aws/config
。请参阅使用设置 Amazon Config Amazon Command Line Interface。 -
使用
%session_id_prefix
魔术命令。请参阅 Jupyter 的 Amazon Glue 交互式会话支持魔术命令。
会话名称的生成方式如下:
提供前缀和 session_id 时:会话名称将为 {prefix}-{UUID}。
未提供任何内容时:会话名称将为 {UUID}。
使用前缀会话名称可以让您在 Amazon CLI 或控制台中列出会话时识别该会话。
为交互式会话指定IAM角色
必须指定 Id Amazon entity and Access Management (IAM) 角色才能与通过交互式会话运行的Amazon GlueETL代码一起使用。
该角色需要的IAM权限与运行Amazon Glue作业所需的权限相同。有关Amazon Glue为Amazon Glue作业和交互式会话创建角色的更多信息,请参阅创建角色。IAM
IAM可以通过两种方式指定角色:
-
使用位于
~.aws/config
(推荐)的 Amazon Command Line Interface 配置文件。更多相关信息,请参阅使用 ~/.aws/config 配置会话。注意
使用
%profile
魔术命令时,将优先采用该配置文件的glue_iam_role
配置。 -
使用 %iam_role 魔术命令。有关更多信息,请参阅 Jupyter 的 Amazon Glue 交互式会话支持魔术命令。
使用命名配置文件配置会话
Amazon Glue交互式会话使用与 Amazon Command Line Interface 或 boto3 相同的凭据,交互式会话支持并使用命名的配置文件,例如~/.aws/config
(Linux 和 macOS)或%USERPROFILE%\.aws\config
(Windows) Amazon CLI 中的配置文件。有关更多信息,请参阅 Using named profiles。
交互式会话允许在配置文件中指定 Amazon Glue 服务角色和会话 ID 前缀,从而利用命名配置文件。要对配置文件角色进行配置,请为命名配置文件的 iam_role
密钥和/或 session_id_prefix
添加一行,如下所示。session_id_prefix
不需要引号。例如,如果要添加
session_id_prefix
,请输入 session_id_prefix=myprefix
的值。
[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
魔术命令进行指定。