将 Amazon Glue for Spark 作业迁移到 Amazon Glue 版本 5.1
本主题介绍 Amazon Glue 版本 0.9、1.0、2.0、3.0、4.0 和 5.0 之间的变化,允许您将 Spark 应用程序和 ETL 作业迁移到 Amazon Glue 5.1。它还介绍了 Amazon Glue 5.1 中的功能以及使用它的优点。
要将此功能与 Amazon Glue ETL 任务结合使用,请在创建任务时为 Glue version 选择 5.1。
主题
新特征
此部分介绍 Amazon Glue 版本 5.1 的新功能和优势。
-
Apache Spark 从 Amazon Glue 5.0 中的 3.5.4 更新到 Amazon Glue 5.1 中的 3.5.6。
-
开放表格式 (OTF) 已更新至 Hudi 1.0.2、Iceberg 1.10.0 和 Delta Lake 3.3.2
-
Iceberg 实体化视图:创建和管理 Iceberg 实体化视图(MV)。有关更多信息,请参阅博客文章
-
Iceberg 格式版本 3.0:扩展数据类型和现有元数据结构以添加新功能。有关更多信息,请参阅 Iceberg Table Spec
。 -
Hudi 全表访问:Apache Spark 中的 Apache Hudi 全表访问(FTA)控制,具体取决于您在其中定义的策略。当作业角色具有全表访问权限时,您可以借助此功能从 Amazon Glue ETL 作业在注册的表上执行读写操作。
-
Spark 原生精细访问控制(FGAC)支持使用:对在其中注册的 Apache Hive、Apache Iceberg 和 Delta Lake 表执行精细访问控制的 DDL/DML 操作(如 CREATE、ALTER、DELETE、DROP)。
-
Spark 作业的审计上下文:已启用作业的 Amazon Glue ETL 作业审计上下文将可用于日志中的 Amazon Glue 和 Amazon Lake Formation API 调用
已知问题和限制
请注意以下已知问题和限制:
-
对用于创建实体化视图、查询重写和增量刷新的视图 SQL 子句的支持有限。更多详情请参阅 Iceberg 实体化视图功能文档页面
-
Hudi FTA 写入要求在作业执行期间使用 HoodieCredentialedHadoopStorage 进行凭证下发。运行 Hudi 作业时设置以下配置:
hoodie.storage.class=org.apache.spark.sql.hudi.storage.HoodieCredentialedHadoopStorage -
Hudi FTA 写入支持仅适用于默认 Hudi 配置。自定义或非默认 Hudi 设置可能无法完全支持,并可能导致意外行为。在 FTA 写入模式下,也不支持 Hudi 读取时合并(MOR)表的聚类功能。
重大更改
请注意以下重大更改:
-
S3A 文件系统已取代 EMRFS 成为默认 S3 连接器。有关如何迁移的信息,请参阅从 Amazon Glue 5.0 迁移到 Amazon Glue 5.1。
用于迁移到 Amazon Glue 5.1 的操作
对于现有任务,请将 Glue version 从以前的版本更改为任务配置中的 Glue 5.1。
-
在 Amazon Glue Studio 中,为
Glue version选择Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3。 -
在 API 中,为
UpdateJobAPI 操作中的GlueVersion参数选择5.1。
对于新任务,请在创建任务时选择 Glue 5.1。
-
在控制台中,为
Glue version选择Spark 3.5.6, Python 3 (Glue Version 5.1) or Spark 3.5.6, Scala 2 (Glue Version 5.1)。 -
在 Amazon Glue Studio 中,为
Glue version选择Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3。 -
在 API 中,为
CreateJobAPI 操作中的GlueVersion参数选择5.1。
要查看 Amazon Glue 5.1中来源于 Amazon Glue 2.0或更早版本的Spark事件日志,请使用 Amazon CloudFormation 或 Docker 为 Amazon Glue 5.1 启动已升级的 Spark 历史记录服务器。
迁移核对清单
查看此核对清单以进行迁移:
-
[Python] 将 boto 引用从 1.34 更新到 1.40。
从 Amazon Glue 5.0 迁移到 Amazon Glue 5.1
所有现有任务参数和 Amazon Glue 5.0 中存在的主要功能将存在于 Amazon Glue 5.1。迁移时,请注意以下更改:
-
在 Amazon Glue 5.1 中,S3A 文件系统已取代 EMRFS 成为默认 S3 连接器。如果
spark.hadoop.fs.s3a.endpoint和spark.hadoop.fs.s3a.endpoint.region均未设置,则 S3A 使用的默认区域为us-east-2。这可能会导致 S3 上传超时错误等问题,尤其是对于 VPC 作业。要缓解此更改导致的问题,在 Amazon Glue 5.1 中使用 S3A 文件系统时,设置spark.hadoop.fs.s3a.endpoint.regionSpark 配置。 -
要继续使用 EMRFS 而不是 S3A,请设置以下 Spark 配置:
--conf spark.hadoop.fs.s3.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem --conf spark.hadoop.fs.AbstractFileSystem.s3.impl=org.apache.hadoop.fs.s3.EMRFSDelegate
请参阅 Spark 迁移文档:
从旧的 Amazon Glue 版本迁移到 Amazon Glue 5.1
-
有关 Amazon Glue 4.0 到 Amazon Glue 5.0 的迁移步骤,请参阅从 Amazon Glue 4.0 迁移到 Amazon Glue 5.0。
-
有关 Amazon Glue 3.0 到 Amazon Glue 5.0 的迁移步骤,请参阅从 Amazon Glue 3.0 迁移到 Amazon Glue 5.0。
-
有关 Amazon Glue 2.0 到 Amazon Glue 5.0 的迁移步骤以及 Amazon Glue 版本 2.0 和 4.0 之间的迁移差异列表,请参阅从 Amazon Glue 2.0 迁移到 Amazon Glue 5.0。
Amazon Glue 5.1 的连接器和 JDBC 驱动程序迁移
有关已升级的 JDBC 和数据湖连接器的版本,请参阅:
以下更改适用于 附录 D:开放表格式升级 中列出的针对 Amazon Glue 5.1的 OTF 版本升级。
Apache Hudi
注意以下更改:
支持对 Lake Formation 注册的表的 FTA 读写访问。
Apache Iceberg
注意以下更改:
支持 Iceberg 格式版本 3。支持以下功能:
用于分区和排序的多参数转换。
行谱系跟踪。
删除向量。在博客文章
中了解更多信息 表加密密钥。
支持对注册的表进行 Spark 原生 FGAC 写入。
Athena SQL 兼容性:由于错误,无法读取 EMR Spark 创建的 Iceberg V3 表:
GENERIC_INTERNAL_ERROR: Cannot read unsupported version 3
Delta Lake
注意以下更改:
支持对 Lake Formation 注册的表的 FTA 读写访问。
附录 A:显著依赖项升级
以下是依赖项升级:
| 依赖关系 | Amazon Glue 5.1 中的版本 | Amazon Glue 5.0 中的版本 | Amazon Glue 4.0 中的版本 | Amazon Glue 3.0 中的版本 | Amazon Glue 2.0 中的版本 | Amazon Glue 1.0 中的版本 |
|---|---|---|---|---|---|---|
| Java | 17 | 17 | 8 | 8 | 8 | 8 |
| Spark | 3.5.6 | 3.5.4 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 |
| Hadoop | 3.4.1 | 3.4.1 | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 |
| Scala | 2.12.18 | 2.12.18 | 2.12 | 2.12 | 2.11 | 2.11 |
| Jackson | 2.15.2 | 2.15.2 | 2.12 | 2.12 | 2.11 | 2.11 |
| Hive | 2.3.9-amzn-4 | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 |
| EMRFS | 2.73.0 | 2.69.0 | 2.54.0 | 2.46.0 | 2.38.0 | 2.30.0 |
| Json4s | 3.7.0-M11 | 3.7.0-M11 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x |
| Arrow | 12.0.1 | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 |
| Amazon Glue 数据目录客户端 | 4.9.0 | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | 不适用 |
| Amazon SDK for Java | 2.35.5 | 2.29.52 | 1.12 | 1.12 | ||
| Python | 3.11 | 3.11 | 3.10 | 3.7 | 2.7 和 3.6 | 2.7 和 3.6 |
| Boto | 1.40.61 | 1.34.131 | 1.26 | 1.18 | 1.12 | 不适用 |
| EMR DynamoDB 连接器 | 5.7.0 | 5.6.0 | 4.16.0 |
附录 B:JDBC 驱动程序升级
以下是 JDBC 驱动程序升级:
| 驱动程序 | Amazon Glue 5.1 中的 JDBC 驱动程序版本 | Amazon Glue 5.0 中的 JDBC 驱动程序版本 | Amazon Glue 4.0 中的 JDBC 驱动程序版本 | Amazon Glue 3.0 中的 JDBC 驱动程序版本 | 过去 Amazon Glue 版本中的 JDBC 驱动程序版本 |
|---|---|---|---|---|---|
| MySQL | 8.0.33 | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 |
| Microsoft SQL Server | 10.2.0 | 10.2.0 | 9.4.0 | 7.0.0 | 6.1.0 |
| Oracle 数据库 | 23.3.0.23.09 | 23.3.0.23.09 | 21.7 | 21.1 | 11.2 |
| PostgreSQL | 42.7.3 | 42.7.3 | 42.3.6 | 42.2.18 | 42.1.0 |
| Amazon Redshift |
redshift-jdbc42-2.1.0.29 |
redshift-jdbc42-2.1.0.29 |
redshift-jdbc42-2.1.0.16 |
redshift-jdbc41-1.2.12.1017 |
redshift-jdbc41-1.2.12.1017 |
| SAP Hana | 2.20.17 | 2.20.17 | 2.17.12 | ||
| Teradata | 20.00.00.33 | 20.00.00.33 | 20.00.00.06 |
附录 C:连接器升级
以下是连接器升级:
| 驱动程序 | Amazon Glue 5.1 中的连接器版本 | Amazon Glue 5.0 中的连接器版本 | Amazon Glue 4.0 中的连接器版本 | Amazon Glue 3.0 中的连接器版本 |
|---|---|---|---|---|
| EMR DynamoDB 连接器 | 5.7.0 | 5.6.0 | 4.16.0 | |
| Amazon Redshift | 6.4.2 | 6.4.0 | 6.1.3 | |
| OpenSearch | 1.2.0 | 1.2.0 | 1.0.1 | |
| MongoDB | 10.3.0 | 10.3.0 | 10.0.4 | 3.0.0 |
| Snowflake | 3.1.1 | 3.0.0 | 2.12.0 | |
| Google BigQuery | 0.32.2 | 0.32.2 | 0.32.2 | |
| AzureCosmos | 4.33.0 | 4.33.0 | 4.22.0 | |
| AzureSQL | 1.3.0 | 1.3.0 | 1.3.0 | |
| Vertica | 3.3.5 | 3.3.5 | 3.3.5 |
附录 D:开放表格式升级
下面是开放表格式升级:
| OTF | Amazon Glue 5.1 中的连接器版本 | Amazon Glue 5.0 中的连接器版本 | Amazon Glue 4.0 中的连接器版本 | Amazon Glue 3.0 中的连接器版本 |
|---|---|---|---|---|
| Hudi | 1.0.2 | 0.15.0 | 0.12.1 | 0.10.1 |
| Delta Lake | 3.3.2 | 3.3.0 | 2.1.0 | 1.0.0 |
| Iceberg | 1.10.0 | 1.7.1 | 1.0.0 | 0.13.1 |