本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
运行 Spark ETL 作业,缩短启动时间
Amazon Glue 2.0 版及更高版本提供在 Amazon Glue 中以更短的启动时间运行 Apache Spark ETL(提取、转换和加载)任务的升级基础设施。由于等待时间缩短,数据工程师可以提高工作效率,并增加与 Amazon Glue 的互动性。减少任务开始时间的差异可以帮助您达到或超过使数据可用于分析的 SLA。
要将此功能与 Amazon Glue ETL 任务结合使用,请在创建任务时为 Glue version
选择 2.0
或更高版本。
支持的新功能
本节介绍 Amazon Glue 2.0 版及更高版本支持的新功能。
支持在任务层面指定其他 Python 模块
Amazon Glue 2.0 版及更高版本还允许您在任务层面提供其他 Python 模块或不同版本。您可以结合使用 --additional-python-modules
选项与一系列逗号分隔的 Python 模块,以添加新模块或更改现有模块的版本。
例如,要更新或添加新的 scikit-learn
模块,请使用以下键/值:"--additional-python-modules", "scikit-learn==0.21.3"
。
此外,在 --additional-python-modules
选项中,您可以指定指向 Python Wheel 模块的 Amazon S3 路径。例如:
--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3
Amazon Glue 使用 Python Package Installer(pip3)来安装其他模块。您可以将 python-modules-installer-option
指定的其他选项传递到 pip3,用于安装模块。pip3 的任何不兼容或限制都将适用。
Amazon Glue 2.0 版中已提供的 Python 模块
Amazon Glue 2.0 版支持以下开箱即用的 Python 模块:
setuptools—45.2.0
subprocess32—3.5.4
ptvsd—4.3.2
pydevd—1.9.0
PyMySQL—0.9.3
docutils—0.15.2
jmespath—0.9.4
six—1.14.0
python_dateutil—2.8.1
urllib3—1.25.8
botocore—1.15.4
s3transfer—0.3.3
boto3—1.12.4
certifi—2019.11.28
chardet—3.0.4
idna—2.9
requests—2.23.0
pyparsing—2.4.6
enum34—1.1.9
pytz—2019.3
numpy—1.18.1
cycler—0.10.0
kiwisolver—1.1.0
scipy—1.4.1
pandas—1.0.1
pyarrow—0.16.0
matplotlib—3.1.3
pyhocon—0.3.54
mpmath—1.1.0
sympy—1.5.1
patsy—0.5.1
statsmodels—0.11.1
fsspec—0.6.2
s3fs—0.4.0
Cython—0.29.15
joblib—0.14.1
pmdarima—1.5.3
scikit-learn—0.22.1
tbats—1.0.9
日志记录行为
Amazon Glue 2.0 版及更高版本支持不同的默认日志记录行为。差异包括:
实时进行日志记录。
驱动程序和执行程序有单独的流。
对于每个驱动程序和执行程序,有两个流,即输出流和错误流。
驱动程序和执行程序流
驱动程序流由任务运行 ID 标识。执行程序流由任务 <run id
>_<executor task id
> 标识。例如:
"logStreamName": "jr_8255308b426fff1b4e09e00e0bd5612b1b4ec848d7884cebe61ed33a31789..._g-f65f617bd31d54bd94482af755b6cdf464542..."
输出和错误流
输出流具有来自代码的标准输出(stdout)。错误流具有来自代码/库的日志消息。
日志流:
驱动程序日志流具有 <
jr
>,其中 <jr
> 是任务运行 ID。执行程序日志流具有 <
jr
>_<g
>,其中 <g
> 是执行程序的任务 ID。您可以在驱动程序错误日志中查找执行程序任务 ID。
Amazon Glue 2.0 版的默认日志组如下:
输出为
/aws-glue/jobs/logs/output
错误为
/aws-glue/jobs/logs/error
提供安全配置时,日志组名称更改为:
/aws-glue/jobs/<
security configuration
>-role/<Role Name
>/output/aws-glue/jobs/<
security configuration
>-role/<Role Name
>/error
在控制台上,Logs (日志) 链接指向输出日志组,Error (错误) 链接指向错误日志组。启用连续日志记录时,Logs (日志) 链接指向连续日志组,Output (输出) 链接指向输出日志组。
日志记录规则
注意
连续日志记录的默认日志组名为 /aws-glue/jobs/logs-v2
。
在 Amazon Glue 2.0 版及更高版本中,连续日志记录的行为与 Amazon Glue 1.0 版相同:
默认日志组:
/aws-glue/jobs/logs-v2
驱动程序日志流:<
jr
>-driver执行程序日志流:<
jr
>-<executor ID
>日志组名称可通过设置
--continuous-log-logGroupName
更改日志流名称可通过设置
--continous-log-logStreamPrefix
添加前缀
不支持的特征
不支持以下 Amazon Glue 功能:
开发终端节点
Amazon Glue 2.0 版及更高版本不会在 Apache YARN 上运行,因此 YARN 设置不适用
Amazon Glue 2.0 版及更高版本没有 Hadoop Distributed File System (HDFS)
Amazon Glue 2.0 版及更高版本不使用动态分配,因此 ExecutorAllocationManager 指标不可用
对于 Amazon Glue 2.0 版或更高版本任务,您可以指定工件数量和工件类型,但不指定
maxCapacity
。-
Amazon Glue 2.0 版及更高版本不支持
s3n
开箱即用。我们建议使用s3
或s3a
。如果任务出于任何原因需要使用s3n
,您可以传递以下附加参数:--conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem