本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
运行 Spark ETL 作业并缩短启动时间
AWS Glue 版本 2.0 为在 AWS Glue 中运行 Apache Spark ETL(提取、转换和加载)作业提供了升级的基础设施,并减少了启动时间。通过减少等待时间,数据工程师可以更有成效并增强其与 AWS Glue 的交互。作业开始时间的变化量可以帮助您满足或超过 SLAs,以使数据可用于分析。
要对 AWS Glue ETL 作业使用此功能,请在创建作业时,为 2.0
选择 Glue version
。
支持的新功能
本节介绍 AWS Glue 版本 2.0 支持的新功能。
支持在作业级别指定其他 Python 模块
AWS 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
AWS Glue 使用 Python 程序包安装程序 (pip3) 安装额外的模块。您可以将 python-modules-installer-option
指定的其他选项传递到 pip3 以安装模块。将会应用 pip3 中任何不兼容或限制。
Python 模块已在 AWS Glue 版本 2.0 中提供
AWS Glue 版本 2.0 支持以下现成的 python 模块:
-
setuptools – 45.2.0
-
setuptools – 45.2.0
-
subprocess32 – 3.5.4
-
ptvsd – 4.3.2
-
pydevd – 1.9.0
-
PyMySQL — 0.9.3
-
文档—0.15.2
-
jmespath - 0.9.4
-
六—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
-
请求 – 2.23.0
-
pyparsing – 2.4.6
-
枚举34—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
-
pystrole – 0.16.0
-
Matplotlib – 3.1.3
-
pyhocon – 0.3.54
-
mpmath – 1.1.0
-
符号 – 1.5.1
-
pathy – 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
日志记录行为
AWS Glue 版本 2.0 支持不同的默认日志记录行为。区别包括:
-
日志记录实时发生。
-
驱动程序和执行程序有单独的流。
-
对于每个驱动程序和执行程序,有两个流:输出流和错误流。
驱动程序和执行程序流
驱动程序流由作业运行 ID 标识。执行程序流由作业 <;run id
>_<executor task id
>;。 例如:
-
"logStreamName": "jr_8255308b426fff1b4e09e00e0bd5612b1b4ec848d7884cebe61ed33a31789..._g-f65f617bd31d54bd94482af755b6cdf464542..."
输出和错误流
输出流具有代码中的标准输出 (stdout)。错误流包含来自代码/库的日志记录消息。
-
日志流:
-
驱动程序日志流 <;
jr
>;,其中 <;jr
>; 是作业运行 ID。 -
执行程序日志流 <;
jr
>_<g
>;,其中 <;g
>; 是执行程序的任务 ID。您可以在驱动程序错误日志中查找执行程序任务 ID。
-
版本 2.0 的默认日志组如下所示:AWS Glue
-
/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 版本 2.0 中,连续日志记录问题要求您在使用连续日志记录功能之前创建日志组。要解决该问题,您必须创建 --continuous-log-logGroup
指定的默认日志记录组或客户日志组,否则不会显示连续日志流。AWS 正在努力解决此问题。
连续日志记录的默认日志组名称为 /aws-glue/jobs/logs-v2
。
在 AWS Glue 版本 2.0 中,连续日志记录与 AWS Glue 版本 1.0 中的行为相同:
-
默认日志组:
/aws-glue/jobs/logs-v2
-
驱动程序日志流:<;
jr
>; 驱动程序 -
执行程序日志流:<;
jr
>-<executor ID
>可通过设置
--continuous-log-logGroupName
更改日志组名称可通过设置
--continous-log-logStreamPrefix
来为日志流名称添加前缀
不支持的功能
不支持以下 AWS Glue 功能:
-
开发终端节点
-
FindMatches 机器学习转换
-
AWS Glue 版本 2.0 在 Apache YARN 上不运行,因此 YARN 设置不适用
-
AWS Glue 版本 2.0 没有 Hadoop 分布式文件系统 (HDFS)
-
AWS Glue 版本 2.0 不使用动态分配,因此 ExecutorAllocationManager 指标不可用
-
对于 AWS Glue 版本 2.0 作业,您可以指定工作线程数和工作线程类型,但不指定
maxCapacity
。