运行 Spark ETL 作业,缩短启动时间 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

运行 Spark ETL 作业,缩短启动时间

AWS Glue 2.0 版本提供已升级的基础设施,用于在 AWS Glue 中运行 Apache Spark ETL(提取、转换和加载)作业,并缩短启动时间。随着等待时间的缩短,数据工程师可以通过 AWS Glue 提高工作效率并提高交互性。减少作业开始时间的差异可以帮助您满足或超过使数据可用于分析的 SLA 要求。

要将此功能用于您的 AWS Glue ETL 作业,请选择2.0对于Glue version创建您的作业时。

支持的新功能

本节介绍 AWS Glue 2.0 版支持的新功能。

Support 在 Job 级别指定其他 Python 模块

AWS Glue 2.0 版还允许您在作业级别提供额外的 Python 模块或不同版本。可以使用--additional-python-modules选项,其中包含逗号分隔的 Python 模块列表,以添加新模块或更改现有模块的版本。

例如,要更新或添加新的scikit-learn模块使用以下键/值:"--additional-python-modules", "scikit-learn==0.21.3"

此外,在--additional-python-modules选项,您可以指定 Python 滚轮模块的 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 软件包安装程序 (ip3) 来安装其他模块。您可以传递由python-modules-installer-option到 ip3 来安装模块。ip3 的任何不兼容或限制都将适用。

AWS Glue 版 2.0 中已提供的 Python 模块

AWS Glue 2.0 版支持以下开箱即用的 python 模块:

  • 设置工具 — 45.2.0

  • 设置工具 — 45.2.0

  • 子进程 32—3.5.4

  • PTVSD —4.3.2

  • Pydevddd—1.9.0

  • PyMyMySql—0.9.3

  • 文档 —0.15.2

  • jmespath—0.9.4

  • 六 —1.14.0

  • Python_datel—2.8.1

  • 城市数据库-1.25.8

  • 肉毒杆菌 —1.15.4

  • 转移 —0.3.3

  • 肉毒素 3—1.12.4

  • 认证 —2019.11.28

  • 充值 —3.0.4

  • IDNA —2.9

  • 请求 —2.23.0

  • pypary —2.4.6

  • 枚举 34 —1.1.9

  • 比茨-2019.3

  • 数字 —1.18.1

  • 循环服务器 —0.10.0

  • 猕猴桃 —1.1.0

  • Sciyy—1.4.1

  • 熊猫 —1.0.1

  • 焦急 —0.16.0

  • MatplotLibb —3.1.3

  • 俾霍肯-0.3.54

  • MPMatth—1.1.0

  • 症状 —1.5.1

  • 模式 —0.5.1

  • 状态模型 —0.11.1

  • Fosspec—0.6.2

  • S3FS —0.4.0

  • 希瑟恩 —0.29.15

  • Jobin —0.14.1

  • PMandarima—1.5.3

  • 科学基础学习 —0.22.1

  • Tbatt —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。

AWS 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

在控制台上,日志链接指向输出日志组,错误链接指向错误日志组。启用连续日志记录后,日志链接指向连续日志组,输出链接指向输出日志组。

日志记录规则

注意

在 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 设置不适用

  • AWS Glue 2.0 版本没有 Hadoop 分布式文件系统 (HDFS)

  • AWS Glue 2.0 版不使用动态分配,因此执行位置管理器指标不可用

  • 对于 AWS Glue 2.0 版作业,您可以指定工作人员数量和工作人员类型,但不指定maxCapacity

  • AWS Glue 版 2.0 不支持s3n现成可开箱即可。我们建议使用s3或者s3a。如果作业需要使用s3n出于任何原因,您可以传递以下附加参数:

    --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem