本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Glue 作业中 AWS 使用作业参数
创建 AWS Glue 作业时,需要设置一些标准字段,例如Role
和WorkerType
。您可以通过 Argument
字段(控制台中的作业参数)提供其他配置信息。在这些字段中,您可以为 AWS Glue 作业提供本主题中列出的参数(参数)。有关 Glue Jo AWS b 的更多信息API,请参阅任务。
设置作业参数
您可以在控制台的 Job details(作业详细信息)选项卡的 Job Parameters(作业参数)标题下配置作业。您也可以 AWS CLI 通过设置DefaultArguments
或在作业NonOverridableArguments
上配置作业,或者在作业运行Arguments
时设置来配置作业。每次运行作业时,都会传入在作业上设置的参数,而在作业运行中设置的参数将仅在单独运行时传入。
例如,以下是运行作业的语法,使用 --arguments
设置作业参数。
$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py"'
访问作业参数
在编 AWS 写 Glue 脚本时,你可能需要访问作业参数值来改变自己代码的行为。我们在库中提供了执行此操作的辅助方法。这些方法可以解析覆盖作业参数值的作业运行参数值。解析在多个位置设置的参数时,作业 NonOverridableArguments
将覆盖作业运行 Arguments
,这将覆盖作业 DefaultArguments
。
在 Python 中:
在 Python 作业中,我们提供了一个名为 getResolvedParameters
的函数。有关更多信息,请参阅 使用 getResolvedOptions 访问参数。sys.argv
变量中有作业参数。
在 Scala 中:
在 Scala 作业中,我们提供了一个名为 GlueArgParser
的对象。有关更多信息,请参阅 AWS Glue Scala GlueArgParser API。sysArgs
变量中有作业参数。
作业参数参考
AWS Glue 可以识别以下参数名称,您可以使用这些参数名称为作业和作业运行设置脚本环境:
--additional-python-modules
-
以逗号分隔的列表,表示要安装的一组 Python 包。您可以从 PyPI 安装包,也可以提供自定义分发。PyPI 包条目的格式为
,带有目标包的 PyPI 名称和版本。自定义分发条目是到分发的 S3 路径。package
==version
条目使用 Python 版本匹配以匹配包和版本。这意味着您需要使用两个等号,例如
==
。还有其他版本匹配运算符,有关更多信息,请参阅 PEP440。 要将模块安装选项传递给
pip3
,请使用 --python-modules-installer-option 参数。 --auto-scale-within-microbatch
-
默认值为 False。此参数只能用于 AWS Glue 流式处理作业,该任务以一系列微批处理流式处理数据,并且必须启用自动缩放。将此值设置为 false 时,它会计算已完成的微批次的批次持续时间的指数移动平均值,并将该值与窗口大小进行比较,以确定是纵向扩展还是缩减执行程序数量。只有在微批次完成时才会进行扩展。将此值设置为 true 时,在微批批次期间,当 Spark 任务数在 30 秒内保持不变,或者当前批处理大于窗口大小时,它会纵向扩展。如果执行程序闲置超过 60 秒,或者批处理持续时间的指数移动平均线很低,则执行程序的数量将下降。
--class
-
用作 Scala 脚本之入口点的 Scala 类。仅在
--job-language
设置为scala
时适用。 --continuous-log-conversionPattern
-
为已启用连续日志记录的作业指定自定义转换日志模式。转换模式仅适用于驱动程序日志和执行程序日志。它不会影响 AWS Glue 进度条。
--continuous-log-logGroup
-
为启用持续 CloudWatch 日志记录的任务指定自定义 Amazon 日志组名称。
--continuous-log-logStreamPrefix
-
为启用持续 CloudWatch 日志记录的作业指定自定义日志流前缀。
--customer-driver-env-vars
和--customer-executor-env-vars
-
这些参数将在操作系统中分别为每个工作线程(驱动程序或执行程序)设置环境变量。在 AWS Glue 之上构建平台和自定义框架时,你可以使用这些参数,让你的用户在上面写作业。启用这两个标志后,可为驱动程序和执行程序分别设置不同的环境变量,而不必在作业脚本本身中注入相同的逻辑。
示例用法
以下是使用这些参数的示例:
"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"", "—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"
在作业运行参数中设置这些值等同于运行以下命令:
在驱动程序中:
导出 CUSTOMER _ KEY1 = VAL1
导出 CUSTOMER _ KEY2 = “val2,val2 val2"
在执行程序中:
导出 CUSTOMER _ KEY3 = VAL3
然后在作业脚本本身中,您可以使用
os.environ.get("CUSTOMER_KEY1")
或System.getenv("CUSTOMER_KEY1")
来检索环境变量。强制实施语法
定义环境变量时应遵循以下标准:
每个键必须具有
CUSTOMER_ prefix
。例如:对于
"CUSTOMER_KEY3=VAL3,KEY4=VAL4"
,KEY4=VAL4
将被忽略并且不会设置。每个键和值对都必须用一个逗号分隔。
例如:
"CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"
如果“值”包含空格或逗号,则必须用引号括起来。
例如:
CUSTOMER_KEY2=\"val2,val2 val2\"
此语法与设置 bash 环境变量的标准非常接近。
--datalake-formats
-
在 AWS Glue 3.0 及更高版本中支持。
指定要使用的数据湖框架。 AWS Glue 会将您指定的框架所需的JAR文件添加到中
classpath
。有关更多信息,请参阅 在 AWS Glue ETL 任务中使用数据湖框架。您可以指定以下一个或多个值,用逗号分隔:
-
hudi
-
delta
-
iceberg
例如,传递以下参数以指定所有三个框架。
'--datalake-formats': 'hudi,delta,iceberg'
-
--disable-proxy-v2
-
禁用服务代理,允许通过您的脚本对 Amazon S3 AWS 和 Glue 进行 AWS 服务调用VPC。 CloudWatch有关更多信息,请参阅将 AWS 呼叫配置为通过您的VPC。要禁用服务代理,请将此参数的值设置为
true
。 --enable-auto-scaling
-
此值设置为
true
时,将打开自动扩缩和按工件计费的功能。 --enable-continuous-cloudwatch-log
-
启用 Glue 作业的 AWS 实时连续记录。您可以在中查看 Apache Spark 的实时作业日志。 CloudWatch
--enable-continuous-log-filter
-
在创建或编辑为连续日志记录启用的作业时,指定标准筛选器 (
true
) 或无筛选器 (false
)。选择标准过滤器会删除无用的 Apache Spark 驱动程序/执行程序和 Apache Hadoop 心跳日志消息。YARN选择无筛选器可提供所有日志消息。 --enable-glue-datacatalog
-
允许你将 AWS Glue 数据目录用作 Apache Spark Hive 元数据仓。要启用此功能,请将值设置为
true
。 --enable-job-insights
-
通过 AWS Glue 作业运行见解启用额外的错误分析监控。有关详细信息,请参阅通过 AWS Glue 任务运行洞察进行监控。默认情况下,该值将设置为
true
,并将启用任务运行洞察。此选项适用于 AWS Glue 版本 2.0 和 3.0。
--enable-metrics
-
为此作业运行启用作业分析指标的集合。这些指标可在 AWS Glue控制台和Amazon控制 CloudWatch 台上找到。此参数的值无关紧要。要启用此功能,您可以为该参数提供任意值,但为了清楚起见,建议使用
true
。要禁用此功能,请从作业配置中移除此参数。 --enable-observability-metrics
-
在 AWS Glue 控制台和控制台下的 Job Runs Monitoring 页面上启用一组可观察性指标,以深入了解每个作业运行中 Amazon CloudWatch 发生的情况。要启用此功能,请将值设置为 true。要禁用此功能,将其设置为
false
或从作业配置中移除此参数。 --enable-rename-algorithm-v2
-
将EMRFS重命名算法版本设置为版本 2。当 Spark 任务使用动态分区覆盖模式时,可能会创建重复分区。例如,您最终可以得到
s3://bucket/table/location/p1=1/p1=1
之类的重复分区。在此处,P1 是被覆盖的分区。重命名算法版本 2 可以解决此问题。此选项仅在 Glue 版本 AWS 1.0 上可用。
--enable-s3-parquet-optimized-committer
-
启用 EMRFS S3 优化的提交器将 Parquet 数据写入 Amazon S3。创建或更新 Glue 作业时,您可以通过 Gl AWS ue 控制台提供参数/值对 AWS 。将值设置为
true
将启用提交程序。默认情况下,该标志在 AWS Glue 3.0 中处于打开状态,在 Glue 2.0 中 AWS 处于关闭状态。有关更多信息,请参阅使用 EMRFS S3 优化的提交器。
--enable-spark-ui
-
如果设置为
true
,则打开该功能以使用 Spark 用户界面监控和调试 AWS Glue ETL 作业。 --executor-cores
-
可以并行运行的 Spark 任务数量。 AWS Glue 3.0及以上版本支持此选项。该值不应超过工作器类型 vCPUs 上数量的 2 倍,即 8 开启、16 开启
G.1X
G.2X
、32 开启G.4X
和 64 开启G.8X
。更新此配置时应谨慎行事,因为它可能会影响任务性能,因为任务并行度的增加会导致内存和磁盘压力,并可能限制源系统和目标系统(例如:这会导致 Amazon 上更多的并发连接)。RDS --extra-files
-
Amazon S3 路径指向其他文件,例如 AWS Glue 在运行脚本之前将其复制到驱动程序节点上的工作目录中的配置文件。多个值必须是以逗号(
,
)分隔的完整路径。仅支持单个文件而不是目录路径。Python Shell 作业类型不支持此选项。 --extra-jars
-
Amazon S3 路径指向 AWS Glue 复制到驱动程序和执行程序的其他文件。 AWS 在执行脚本之前,Glue 还会将这些文件添加到 Java 类路径中。多个值必须是以逗号(
,
)分隔的完整路径。扩展名不必是.jar
--extra-py-files
-
在运行脚本之前,Amazon S3 会指向其他 Python 模块的路径, AWS Glue 将这些模块添加到驱动程序节点上的 Python 路径中。多个值必须是以逗号(
,
)分隔的完整路径。仅支持单个文件而不是目录路径。 --job-bookmark-option
-
控制作业书签的行为。可以设置以下选项值。
‑‑job‑bookmark‑option 值 描述 job-bookmark-enable
追踪以前处理数据。当作业运行时,处理自上一个检查点以来的新数据。 job-bookmark-disable
始终处理整个数据集。您负责管理上一个作业运行的输出。 job-bookmark-pause
处理上次成功运行以来的增量数据或以下子选项标识的范围内的数据,但不更新最后一个书签的状态。您负责管理上一个作业运行的输出。这两个子选项的说明如下: -
job-bookmark-from
<from-value>
是运行 ID,它表示在最后一次成功运行之前所处理的所有输入,包括指定的运行 ID。对应的输入将被忽略。 -
job-bookmark-to
<to-value>
是运行 ID,它表示在最后一次成功运行之前所处理的所有输入,包括指定的运行 ID。作业会处理对应的输入(不包括由<from-value>
标识的输入)。任何晚于此输入的输入也会被排除在外,不进行处理。
指定此选项集时,作业书签状态不更新。
子选项是可选的。但是,在使用时,必须提供两个子选项。
例如,要启用作业书签,请传递以下参数。
'--job-bookmark-option': 'job-bookmark-enable'
-
--job-language
-
脚本编程语言。此值必须为
scala
或python
。如果此参数不存在,默认值为python
。 --python-modules-installer-option
-
纯文本字符串,它定义了在使用 --additional-python-modules 安装模块时要传递给
pip3
的选项。像在命令行中一样提供选项,用空格分隔这些选项并以短划线作为前缀。有关使用情况的更多信息,请参阅 使用 pip 在 AWS Glue 2.0+ 中安装其他 Python 模块。注意
当你使用 Python 3.9 时, AWS Glue 作业不支持此选项。
--scriptLocation
-
ETL您的脚本所在的亚马逊简单存储服务 (Amazon S3) Simple Service 位置(表单中
s3://path/to/my/script.py
)。此参数会覆盖JobCommand
对象中设置的脚本位置。 --spark-event-logs-path
-
指定 Amazon S3 路径。使用 Spark UI 监控功能时, AWS Glue 会每 30 秒刷新 Spark 事件日志到 Amazon S3 路径的存储桶,该存储桶可用作存储 Spark UI 事件的临时目录。
--TempDir
-
指定可用作任务的临时目录的存储桶的 Amazon S3 路径。
例如,要设置临时目录,请传递以下参数。
'--TempDir': '
s3-path-to-directory
'注意
AWS 如果某个区域中尚不存在存储桶,Glue 会为任务创建临时存储桶。此存储桶可能允许公开访问。您可以修改 Amazon S3 中的存储桶以设置公开访问数据块,也可以在该区域中的所有任务完成之后删除存储桶。
--use-postgres-driver
-
将此值设置为时
true
,它会优先考虑类路径中的 Postgres JDBC 驱动程序,以避免与 Amazon Redshift 驱动程序发生冲突。JDBC此选项仅在 Glue 版本 AWS 2.0 中可用。 --user-jars-first
-
将此值设置为时
true
,它会优先考虑客户在类路径中的额外JAR文件。此选项仅在 AWS Glue 2.0 或更高版本中可用。 --conf
-
控制 Spark 配置参数。适用于高级使用案例。
--encryption-type
-
传统参数。应使用安全配置来配置相应的行为。有关安全配置的更多信息,请参阅 加密 AWS Glue 写入的数据。
AWS Glue 在内部使用以下参数,你永远不应该使用它们:
-
--debug
— Glue 的 AWS 内部。请勿设置。 -
--mode
— Glue 的 AWS 内部。请勿设置。 -
--JOB_NAME
— Glue 的 AWS 内部。请勿设置。 -
--endpoint
— Glue 的 AWS 内部。请勿设置。
AWS Glue 支持使用 Python 的site
模块引导环境,sitecustomize
用于执行特定于站点的自定义。建议仅在高级用例中引导您自己的初始化函数,Glue 4.0 会尽力支持自举初始化函数。 AWS
环境变量前缀 GLUE_CUSTOMER
保留给客户使用。