

# 将 AWS Glue for Spark 作业迁移到 AWS Glue 版本 5.0
<a name="migrating-version-50"></a>

本主题介绍 AWS Glue 版本 0.9、1.0、2.0、3.0 和 4.0 之间的变化，允许您将 Spark 应用程序和 ETL 作业迁移到 AWS Glue 5.0。它还介绍了 AWS Glue 5.0 中的功能以及使用它的优点。

要将此功能与 AWS Glue ETL 任务结合使用，请在创建任务时为 `Glue version` 选择 **5.0**。

**Topics**
+ [新特征](#migrating-version-50-features)
+ [用于迁移到 AWS Glue 5.0 的操作](#migrating-version-50-actions)
+ [迁移核对清单](#migrating-version-50-checklist)
+ [AWS Glue 5.0 功能](#migrating-version-50-features)
+ [从 AWS Glue 4.0 迁移到 AWS Glue 5.0](#migrating-version-50-from-40)
+ [从 AWS Glue 3.0 迁移到 AWS Glue 5.0](#migrating-version-50-from-30)
+ [从 AWS Glue 2.0 迁移到 AWS Glue 5.0](#migrating-version-50-from-20)
+ [AWS Glue 5.0 中的日志记录行为变化](#enable-continous-logging-changes-glue-50)
+ [AWS Glue 5.0 的连接器和 JDBC 驱动程序迁移](#migrating-version-50-connector-driver-migration)

## 新特征
<a name="migrating-version-50-features"></a>

此部分介绍 AWS Glue 版本 5.0 的新功能和优势。
+ Apache Spark 从 AWS Glue 4.0 中的 3.3.0 更新到 AWS Glue 5.0 中的 3.5.4。请参阅[从 Spark 3.3.0 到 Spark 3.5.4 的主要增强功能](#migrating-version-50-features-spark)。
+ 使用 Lake Formation 的 Spark 原生精细访问控制 (FGAC)。这包括适用于 Iceberg、Delta 和 Hudi 表的 FGAC。有关更多信息，请参阅[将 AWS Glue 与 AWS Lake Formation 结合使用以进行精细访问控制](https://docs.aws.amazon.com/glue/latest/dg/security-lf-enable.html)。

  请注意 Spark 原生 FGAC 的以下注意事项或限制：
  + 目前不支持数据写入
  + 使用 Lake Formation 通过 `GlueContext` 写入 Iceberg 需要使用 IAM 访问控制

  有关使用 Spark-Native FGAC 时的限制和注意事项的完整列表，请参阅[注意事项和限制](security-lf-enable-considerations.md)。
+ 支持 Amazon S3 访问权限管控作为 AWS Glue 对 Amazon S3 数据的可扩展访问控制解决方案。有关更多信息，请参阅 [将 Amazon S3 访问权限管控与 AWS Glue 结合使用](security-s3-access-grants.md)。
+ 开放表格式（OTF）已更新至 Hudi 0.15.0、Iceberg 1.7.1 和 Delta Lake 3.3.0
+ Amazon SageMaker Unified Studio 支持。
+ Amazon SageMaker Lakehouse 和数据抽象集成。有关更多信息，请参阅 [从 AWS Glue ETL 查询元存储数据目录](#migrating-version-50-features-metastore)。
+ 支持使用 `requirements.txt` 安装其他 Python 库。有关更多信息，请参阅 [使用 requirements.txt 在 AWS Glue 5.0 或更高版本中安装其他 Python 库](aws-glue-programming-python-libraries.md#addl-python-modules-requirements-txt)。
+ AWS Glue 5.0 支持 Amazon DataZone 中的数据世系。您可以配置 AWS Glue 以在 Spark 作业运行期间自动收集世系信息，并发送要在 Amazon DataZone 中可视化的世系事件。有关更多信息，请参阅 [Data lineage in Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/datazone-data-lineage.html)。

  要在 AWS Glue 控制台上对此进行配置，请启用**生成世系事件**，然后在**作业详细信息**选项卡上输入您的 Amazon DataZone 域 ID。  
![\[该屏幕截图显示为 AWS Glue 启用 Amazon DataZone 数据世系。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/glue-50-data-lineage.png)

  或者，您可以提供以下作业参数（提供您的 DataZone 域 ID）：
  + 键：`--conf`
  + 值：

    ```
    extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener
    —conf spark.openlineage.transport.type=amazon_datazone_api
    -conf spark.openlineage.transport.domainId=<your-domain-ID>
    ```
+ 连接器和 JDBC 驱动程序更新。有关更多信息，请参阅[附录 B：JDBC 驱动程序升级](#migrating-version-50-appendix-jdbc-driver)和[附录 C：连接器升级](#migrating-version-50-appendix-connector)。
+ Java 从 8 更新到 17。
+ 增加了 AWS Glue `G.1X` 和 `G.2X` 工作线程的存储空间，磁盘空间分别增加到 94GB 和 138GB。此外，AWS Glue 4.0 及更高版本中提供了新的 Worker 类型 `G.12X`、`G.16X` 以及内存优化型 `R.1X`、`R.2X`、`R.4X`、`R.8X`。有关更多信息，请参阅 [作业](aws-glue-api-jobs-job.md)。
+ **支持 AWS SDK for Java 版本 2**：如果作业支持 v2，则 AWS Glue 5.0 作业可以使用 Java 版本 [1.12.569](https://github.com/aws/aws-sdk-java/tree/1.12.569) 或 [2.28.8](https://github.com/aws/aws-sdk-java-v2/tree/2.28.8)。AWS SDK for Java 2.x 是对版本 1.x 代码库的重大改写。它基于 Java 8\$1 构建，并增加了几个请求次数较多的功能。其中包括对非阻塞 I/O 的支持以及在运行时系统插入不同 HTTP 实现的功能。有关更多信息，包括从 SDK for Java v1 到 v2 的迁移指南，请参阅 [AWS SDK for Java 版本 2](https://docs.aws.amazon.com/sdk-for-java) 指南。

**重大更改**  
请注意以下重大更改：
+  在 AWS Glue 5.0 中，当使用 S3A 文件系统时，如果未设置“fs.s3a.endpoint”和“fs.s3a.endpoint.region”，则 S3A 使用的默认区域为“us-east-2”。这可能会导致 S3 上传超时错误等问题，尤其是对于 VPC 作业。要缓解此更改导致的问题，在 AWS Glue 5.0 中使用 S3A 文件系统时，设置 “fs.s3a.endpoint.region”Spark 配置。
+ Lake Formation 精细访问控制（FGAC）
  + AWS Glue 5.0 仅支持将新的 Spark 原生 FGAC 与 Spark DataFrames 结合使用，不支持将 FGAC 与 AWS Glue DynamicFrames 结合使用。
    + 要在 5.0 中使用 FGAC，需要从 AWS Glue DynamicFrames 迁移到 Spark DataFrames
    + 如果不需要 FGAC，则无需迁移到 Spark DataFrame，而作业书签、下推谓词等 GlueContext 功能将继续起作用。
  + 使用 Spark 原生 FGAC 的作业至少需要以下 4 个 Worker 节点：一个用于用户驱动程序、一个用于系统驱动程序、一个用于系统执行程序和一个用于备用用户执行程序。
  + 有关更多信息，请参阅[将 AWS Glue 与 AWS Lake Formation 结合使用以进行精细访问控制](https://docs.aws.amazon.com/glue/latest/dg/security-lf-enable.html)。
+ Lake Formation 全表访问（FTA）
  + AWS Glue 5.0 支持将 FTA 与 Spark 原生 DataFrames（新版）和 GlueContext DynamicFrames（旧版，有限制）结合使用
  + Spark 原生 FTA
    + 如果 4.0 脚本使用 GlueContext，则请迁移到使用原生 Spark。
    + 此功能仅适用于 Hive 和 Iceberg 表
    + 有关配置 5.0 作业以使用 Spark 原生 FTA 的更多信息，请参阅 
  + GlueContext DynamicFrame FTA
    + 无需代码更改
    + 此功能仅适用于非 OTF 表，不支持 Iceberg、Delta Lake 和 Hudi。
+ 不支持[向量化 SIMD CSV 读取器](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-csv-home.html#aws-glue-programming-etl-format-simd-csv-reader)。
+ 不支持[连续记录](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging-enable.html)到输出日志组。请改用 `error` 日志组。
+ AWS Glue 作业运行见解 `job-insights-rule-driver` 已弃用。`job-insights-rca-driver` 日志流现在位于错误日志组中。
+ 不支持基于 Athena 的自定义/市场连接器。
+ 不支持 Adob​​e Marketo Engage、Facebook Ads、Google Ads、Google Analytics 4、Google Sheets、Hubspot、Instagram Ads、Intercom、Jira Cloud、Oracle NetSuite、Salesforce、Salesforce Marketing Cloud、Salesforce Marketing Cloud Account Engagement、SAP OData、ServiceNow、Slack、Snapchat Ads、Stripe、Zendesk 和 Zoho CRM 连接器。
+ AWS Glue 5.0 不支持自定义 log4j 属性。

### 从 Spark 3.3.0 到 Spark 3.5.4 的主要增强功能
<a name="migrating-version-50-features-spark"></a>

请注意以下增强功能：
+ 适用于 Spark Connect 的 Python 客户端 ([SPARK-39375](https://issues.apache.org/jira/browse/SPARK-39375))。
+ 实现对表中列的默认值的支持 ([SPARK-38334](https://issues.apache.org/jira/browse/SPARK-38334))。
+ 支持“横向列别名引用”([SPARK-27561](https://issues.apache.org/jira/browse/SPARK-27561))。
+ 强化错误类的 SQLSTATE 使用 ([SPARK-41994](https://issues.apache.org/jira/browse/SPARK-41994))。
+ 默认 Bloom 筛选条件联接 ([SPARK-38841](https://issues.apache.org/jira/browse/SPARK-38841))。
+ 为大型应用程序提供更好的 Spark UI 可扩展性和驱动程序稳定性 ([SPARK-41053](https://issues.apache.org/jira/browse/SPARK-41053))。
+ 结构化流中的异步进度跟踪 ([SPARK-39591](https://issues.apache.org/jira/browse/SPARK-39591))。
+ 结构化流中的 Python 任意有状态处理 ([SPARK-40434](https://issues.apache.org/jira/browse/SPARK-40434))。
+ Pandas API 覆盖范围改进 ([SPARK-42882](https://issues.apache.org/jira/browse/SPARK-42882)) 和 PySpark 中的 NumPy 输入支持 ([SPARK-39405](https://issues.apache.org/jira/browse/SPARK-39405))。
+ 为 PySpark 用户定义的函数提供内存分析器 ([SPARK-40281](https://issues.apache.org/jira/browse/SPARK-40281))。
+ 实现 PyTorch 分发服务器 ([SPARK-41589](https://issues.apache.org/jira/browse/SPARK-41589))。
+ 发布 SBOM 工件 ([SPARK-41893](https://issues.apache.org/jira/browse/SPARK-41893))。
+ 支持仅 IPv6 环境 ([SPARK-39457](https://issues.apache.org/jira/browse/SPARK-39457))。
+ 自定义的 K8s 调度器（Apache YuniKorn 和 Volcano）GA ([SPARK-42802](https://issues.apache.org/jira/browse/SPARK-42802))。
+ Spark Connect ([SPARK-42554](https://issues.apache.org/jira/browse/SPARK-42554)) 和 ([SPARK-43351](https://issues.apache.org/jira/browse/SPARK-43351)) 中支持 Scala 和 Go 客户端。
+ 基于 PyTorch 的 Spark Connect 分布式 ML 支持 ([SPARK-42471](https://issues.apache.org/jira/browse/SPARK-42471))。
+ Python 和 Scala 中对 Spark Connect 的结构化流支持 ([SPARK-42938](https://issues.apache.org/jira/browse/SPARK-42938))。
+ Python Spark Connect 客户端的 Pandas API 支持 ([SPARK-42497](https://issues.apache.org/jira/browse/SPARK-42497))。
+ 引入 Arrow Python UDF ([SPARK-40307](https://issues.apache.org/jira/browse/SPARK-40307))。
+ 支持 Python 用户定义的表函数 ([SPARK-43798](https://issues.apache.org/jira/browse/SPARK-43798))。
+ 将 PySpark 错误迁移到错误类 ([SPARK-42986](https://issues.apache.org/jira/browse/SPARK-42986))。
+ PySpark 测试框架 ([SPARK-44042](https://issues.apache.org/jira/browse/SPARK-44042))。
+ 添加对 Datasketches HllSketch 的支持 ([SPARK-16484](https://issues.apache.org/jira/browse/SPARK-16484))。
+ 内置 SQL 函数改进 ([SPARK-41231](https://issues.apache.org/jira/browse/SPARK-41231))。
+ IDENTIFIER 子句 ([SPARK-43205](https://issues.apache.org/jira/browse/SPARK-43205))。
+ 将 SQL 函数添加到 Scala、Python 和 R API 中 ([SPARK-43907](https://issues.apache.org/jira/browse/SPARK-43907))。
+ 为 SQL 函数添加命名参数支持 ([SPARK-43922](https://issues.apache.org/jira/browse/SPARK-43922))。
+ 如果迁移了随机排序数据，则避免在已停用的执行程序丢失时重新运行不必要的任务 ([SPARK-41469](https://issues.apache.org/jira/browse/SPARK-41469))。
+ 分布式 ML <> spark connect ([SPARK-42471](https://issues.apache.org/jira/browse/SPARK-42471))。
+ DeepSpeed 分发服务器 ([SPARK-44264](https://issues.apache.org/jira/browse/SPARK-44264))。
+ 为 RocksDB 状态存储实现更改日志检查点 ([SPARK-43421](https://issues.apache.org/jira/browse/SPARK-43421))。
+ 在运算符之间引入水印传播 ([SPARK-42376](https://issues.apache.org/jira/browse/SPARK-42376))。
+ 引入 dropDuplicatesWithinWatermark ([SPARK-42931](https://issues.apache.org/jira/browse/SPARK-42931))。
+ RocksDB 状态存储提供程序内存管理增强功能 ([SPARK-43311](https://issues.apache.org/jira/browse/SPARK-43311))。

## 用于迁移到 AWS Glue 5.0 的操作
<a name="migrating-version-50-actions"></a>

对于现有任务，请将 `Glue version` 从以前的版本更改为任务配置中的 `Glue 5.0`。
+ 在 AWS Glue Studio 中，为 `Glue version` 选择 `Glue 5.0 - Supports Spark 3.5.4, Scala 2, Python 3`。
+ 在 API 中，为 [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob) API 操作中的 `GlueVersion` 参数选择 **5.0**。

对于新任务，请在创建任务时选择 `Glue 5.0`。
+ 在控制台中，为 `Glue version` 选择 `Spark 3.5.4, Python 3 (Glue Version 5.0) or Spark 3.5.4, Scala 2 (Glue Version 5.0)`。
+ 在 AWS Glue Studio 中，为 `Glue version` 选择 `Glue 5.0 - Supports Spark 3.5.4, Scala 2, Python 3`。
+ 在 API 中，为 [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob) API 操作中的 `GlueVersion` 参数选择 **5.0**。

要查看 AWS Glue 5.0中来源于 AWS Glue 2.0或更早版本的Spark事件日志，请[使用 CloudFormation 或 Docker 为 AWS Glue 5.0 启动已升级的 Spark 历史记录服务器](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html)。

## 迁移核对清单
<a name="migrating-version-50-checklist"></a>

查看此核对清单以进行迁移：
+ Java 17 更新
+ [Scala] 将 AWS SDK 调用从 v1 升级到 v2
+ Python 3.10 到 3.11 的迁移
+ [Python] 将 boto 引用从 1.26 更新到 1.34

## AWS Glue 5.0 功能
<a name="migrating-version-50-features"></a>

本节将更详细地介绍 AWS Glue 功能。

### 从 AWS Glue ETL 查询元存储数据目录
<a name="migrating-version-50-features-metastore"></a>

您可以注册自己的 AWS Glue 作业以访问 AWS Glue Data Catalog，使表和其他元存储资源可供不同的消费者使用。Data Catalog 支持多目录层次结构，可统一 Amazon S3 数据湖中的所有数据。它还提供了 Hive 元存储 API 和开源 Apache Iceberg API 来访问数据。这些功能可用于 AWS Glue 和其他面向数据的服务，如 Amazon EMR、Amazon Athena 和 Amazon Redshift。

在 Data Catalog 中创建资源时，您可以从任何支持 Apache Iceberg REST API 的 SQL 引擎访问它们。AWS Lake Formation 管理权限。配置后，您可以利用 AWS Glue 的功能通过使用熟悉的应用程序查询这些元存储资源来查询不同的数据。这些应用程序包括 Apache Spark 和 Trino。

#### 元数据资源的组织方式
<a name="migrating-version-50-features-metastore-organized"></a>

使用 AWS Glue Data Catalog，数据按目录、数据库和表的逻辑层次结构进行组织：
+ 目录：保存数据存储中的对象（例如架构或表）的逻辑容器。
+ 数据库：在目录中组织数据对象（例如表和视图）。
+ 表和视图：数据库中的数据对象，为抽象层提供可理解的架构。它们使访问底层数据变得容易，这些数据可能采用各种格式并位于不同的位置。

## 从 AWS Glue 4.0 迁移到 AWS Glue 5.0
<a name="migrating-version-50-from-40"></a>

AWS Glue 4.0 中存在的所有现有作业参数和主要功能都将存在于 AWS Glue 5.0 中，机器学习转换除外。

添加了以下新参数：
+ `--enable-lakeformation-fine-grained-access`：在 AWS Lake Formation 表中启用精细访问控制 (FGAC) 功能。

请参阅 Spark 迁移文档：
+ [Migration Guide: Spark Core](https://spark.apache.org/docs/3.5.6/core-migration-guide.html)
+ [Migration Guide: SQL, Datasets and DataFrame](https://spark.apache.org/docs/3.5.6/sql-migration-guide.html)
+ [Migration Guide: Structured Streaming](https://spark.apache.org/docs/3.5.6/ss-migration-guide.html)
+ [Upgrading PySpark](https://spark.apache.org/docs/3.5.6/api/python/migration_guide/pyspark_upgrade.html)

## 从 AWS Glue 3.0 迁移到 AWS Glue 5.0
<a name="migrating-version-50-from-30"></a>

**注意**  
有关与 AWS Glue 4.0 相关的迁移步骤，请参阅[从 AWS Glue 3.0 迁移到 AWS Glue 4.0](migrating-version-40.md#migrating-version-40-from-30)。

AWS Glue 3.0 中存在的所有现有作业参数和主要功能都将存在于 AWS Glue 5.0 中，机器学习转换除外。

## 从 AWS Glue 2.0 迁移到 AWS Glue 5.0
<a name="migrating-version-50-from-20"></a>

**注意**  
有关与 AWS Glue 4.0 相关的迁移步骤以及 AWS Glue 版本 3.0 和 4.0 之间的迁移差异列表，请参阅[从 AWS Glue 3.0 迁移到 AWS Glue 4.0](migrating-version-40.md#migrating-version-40-from-30)。

还请注意 AWS Glue 版本 3.0 和 2.0 之间的以下迁移差异：
+ AWS Glue 2.0 中存在的所有现有作业参数和主要功能都将存在于 AWS Glue 5.0 中，机器学习转换除外。
+ 仅有几项 Spark 更改可能需要修订脚本，确保不会引用已删除的功能。例如，Spark 3.1.1 及更高版本不启用 Scala 无类型的 UDF，但 Spark 2.4 确实允许它们。
+ 不支持 Python 2.7。
+ 由于多个依赖项进行了升级，现有 AWS Glue 2.0 作业中提供的任何额外 jar 都可能带来冲突的依赖项。您可以使用 `--user-jars-first` 作业参数避免类路径冲突。
+ 改变了从/到 parquet 文件加载/保存时间戳的行为。有关更多详细信息，请参阅 从 Spark SQL 3.0 升级到 3.1。
+ 驱动程序/执行程序配置的 Spark 任务并行度不同。您可以通过传递 `--executor-cores` 作业参数来调整任务并行度。

## AWS Glue 5.0 中的日志记录行为变化
<a name="enable-continous-logging-changes-glue-50"></a>

 AWS Glue 5.0 中的日志记录行为变化如下。有关更多信息，请参阅 [AWS Glue 作业的日志记录](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html)。
+  现在，所有日志（系统日志、Spark 进程守护程序日志、用户日志和 Glue Logger 日志）都会默认写入 `/aws-glue/jobs/error` 日志组，
+  而不再使用之前版本中用于连续日志记录的 `/aws-glue/jobs/logs-v2` 日志组。
+  不再能使用已移除的连续日志参数来重命名或自定义日志组或日志流的名称。而应参阅 AWS Glue 5.0 中的新作业参数。

### AWS Glue 5.0 中引入了两个新的作业参数
<a name="enable-continous-logging-new-arguments-glue-50"></a>
+  `––custom-logGroup-prefix`：让您能够为 `/aws-glue/jobs/error` 和 `/aws-glue/jobs/output` 日志组指定自定义前缀。
+  `––custom-logStream-prefix`：让您能够为日志组内的日志流名称指定自定义前缀。

   自定义前缀的验证规则和限制包括：
  +  完整日志流名称长度必须介于 1 到 512 个字符之间。
  +  日志流名称的自定义前缀长度不应超过 400 个字符。
  +  前缀中允许使用的字符包括字母数字字符、下划线（“\$1”)、连字符（“-”）和正斜杠（“/”）。

### AWS Glue 5.0 中已弃用的连续日志记录参数
<a name="enabling-continuous-logging-deprecated-arguments"></a>

 AWS Glue 5.0 中已弃用以下用于连续日志记录的作业参数 
+  `––enable-continuous-cloudwatch-log` 
+  `––continuous-log-logGroup` 
+  `––continuous-log-logStreamPrefix` 
+  `––continuous-log-conversionPattern` 
+  `––enable-continuous-log-filter` 

## AWS Glue 5.0 的连接器和 JDBC 驱动程序迁移
<a name="migrating-version-50-connector-driver-migration"></a>

有关已升级的 JDBC 和数据湖连接器的版本，请参阅：
+ [附录 B：JDBC 驱动程序升级](#migrating-version-50-appendix-jdbc-driver)
+ [附录 C：连接器升级](#migrating-version-50-appendix-connector)
+ [附录 D：开放表格式升级](#migrating-version-50-appendix-open-table-formats)

以下更改适用于 Glue 5.0 附录中识别的连接器或驱动程序版本。

**Amazon Redshift**  
注意以下更改：
+ 增加对三部分表名的支持，以允许连接器查询 Redshift 数据共享表。
+ 更正了 Spark `ShortType` 的映射，使用 Redshift `SMALLINT` 而不是 `INTEGER`，以更好地匹配预期的数据大小。
+ 增加了对 Amazon Redshift Serverless 的自定义集群名称 (CNAME) 的支持。

**Apache Hudi**  
注意以下更改：
+ 支持记录级索引。
+ 支持自动生成记录键。现在，您不必指定记录键字段。

**Apache Iceberg**  
注意以下更改：
+ 使用 AWS Lake Formation 支持精细访问控制。
+ 支持分支和标记，它们是对具有自己独立生命周期的快照的命名引用。
+ 添加了更改日志查看过程，该过程会生成一个视图，其中包含在指定时间段内或特定快照之间对表所做的更改。

**Delta Lake**  
注意以下更改：
+ 支持 Delta 通用格式 (UniForm)，可通过 Apache Iceberg 和 Apache Hudi 实现无缝访问。
+ 支持实现读取时合并范式的删除向量。

**AzureCosmos**  
注意以下更改：
+ 增加了分层分区键支持。
+ 添加了将自定义架构与 StringType（原始 json）一起用于嵌套属性的选项。
+ 添加了配置选项 `spark.cosmos.auth.aad.clientCertPemBase64`，以允许使用带有证书的 SPN（ServicePrincipal 名称）身份验证，而不是客户端密钥。

有关更多信息，请参阅 [Azure Cosmos DB Spark connector change log](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/cosmos/azure-cosmos-spark_3-2_2-12/CHANGELOG.md)。

**Microsoft SQL Server**  
注意以下更改：
+ 默认情况下启用 TLS 加密。
+ 当 encrypt = false 但服务器需要加密时，将根据 `trustServerCertificate` 连接设置验证证书。
+ `aadSecurePrincipalId` 和 `aadSecurePrincipalSecret` 已弃用。
+ `getAADSecretPrincipalId` API 已移除。
+ 指定领域时添加了 CNAME 解析。

**MongoDB**  
注意以下更改：
+ 支持使用 Spark Structured Streaming 的微批处理模式。
+ 支持 BSON 数据类型。
+ 添加了在使用微批处理或连续流模式时读取多个集合的支持。
  + 如果 `collection` 配置选项中使用的集合名称包含逗号，则 Spark Connector 会将其视为两个不同的集合。为避免这种情况，您必须在逗号前面加上反斜杠 (\$1) 以对其进行转义。
  + 如果 `collection` 配置选项中使用的集合名称为“\$1”，则 Spark Connector 会将其解释为扫描所有集合的规范。为避免这种情况，您必须在星号前面加上反斜杠 (\$1) 以对其进行转义。
  + 如果 `collection` 配置选项中使用的集合名称包含反斜杠 (\$1)，则 Spark Connector 会将反斜杠视为转义字符，这可能会改变其对值的解释方式。为避免这种情况，您必须在反斜杠前面加上另一个反斜杠以对其进行转义。

有关更多信息，请参阅 [MongoDB Spark 连接器发布说明](https://www.mongodb.com/docs/spark-connector/current/release-notes/)。

**Snowflake**  
注意以下更改：
+ 引入了新的 `trim_space` 参数，可用于在保存到 Snowflake 表时自动修剪 `StringType` 列的值。默认值：`false`。
+ 默认情况下，在会话级别禁用 `abort_detached_query` 参数。
+ 删除了使用 OAUTH 时对 `SFUSER` 参数的要求。
+ 删除了高级查询下推功能。该功能的替代方案可用。例如，用户可以直接从 Snowflake SQL 查询加载数据，而不是从 Snowflake 表加载数据。

有关更多信息，请参阅 [Snowflake Connector for Spark release notes](https://docs.snowflake.com/en/release-notes/clients-drivers/spark-connector-2024)。

### 附录 A：显著依赖项升级
<a name="migrating-version-50-appendix-dependencies"></a>

以下是依赖项升级：


| 依赖关系 | AWS Glue 5.0 中的版本 | AWS Glue 4.0 中的版本 | AWS Glue 3.0 中的版本 | AWS Glue 2.0 中的版本 | AWS Glue 1.0 中的版本 | 
| --- | --- | --- | --- | --- | --- | 
| Java | 17 | 8 | 8 | 8 | 8 | 
| Spark | 3.5.4 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 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 | 2.12 | 2.1.1 | 2.1.1 | 
| Jackson | 2.15.2 | 2.12 | 2.12 | 2.1.1 | 2.1.1 | 
| Hive | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 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.6.6 | 3.5.x | 3.5.x | 
| Arrow | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS Glue 数据目录客户端 | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | 不适用 | 
| AWS SDK for Java | 2.29.52 | 1.12 | 1.12 |  |  | 
| Python | 3.11 | 3.10 | 3.7 | 2.7 和 3.6 | 2.7 和 3.6 | 
| Boto | 1.34.131 | 1.26 | 1.18 | 1.12 | 不适用 | 
| EMR DynamoDB 连接器 | 5.6.0 | 4.16.0 |  |  |  | 

### 附录 B：JDBC 驱动程序升级
<a name="migrating-version-50-appendix-jdbc-driver"></a>

以下是 JDBC 驱动程序升级：


| 驱动程序 | AWS Glue 5.0 中的 JDBC 驱动程序版本 | AWS Glue 4.0 中的 JDBC 驱动程序版本 | AWS Glue 3.0 中的 JDBC 驱动程序版本 | 过去 AWS Glue 版本中的 JDBC 驱动程序版本 | 
| --- | --- | --- | --- | --- | 
| MySQL | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 | 
| Microsoft SQL Server | 10.2.0 | 9.4.0 | 7.0.0 | 6.1.0 | 
| Oracle 数据库 | 23.3.0.23.09 | 21.7 | 21.1 | 11.2 | 
| PostgreSQL | 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.16  |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc41-1.2.12.1017   | 
| SAP Hana | 2.20.17 | 2.17.12 |  |  | 
| Teradata | 20.00.00.33 | 20.00.00.06 |  |  | 

### 附录 C：连接器升级
<a name="migrating-version-50-appendix-connector"></a>

以下是连接器升级：


| 驱动程序 | AWS Glue 5.0 中的连接器版本 | AWS Glue 4.0 中的连接器版本 | AWS Glue 3.0 中的连接器版本 | 
| --- | --- | --- | --- | 
| EMR DynamoDB 连接器 | 5.6.0 | 4.16.0 |  | 
| Amazon Redshift | 6.4.0 | 6.1.3 |  | 
| OpenSearch | 1.2.0 | 1.0.1 |  | 
| MongoDB | 10.3.0 | 10.0.4 | 3.0.0 | 
| Snowflake | 3.0.0 | 2.12.0 |  | 
| Google BigQuery | 0.32.2 | 0.32.2 |  | 
| AzureCosmos | 4.33.0 | 4.22.0 |  | 
| AzureSQL | 1.3.0 | 1.3.0 |  | 
| Vertica | 3.3.5 | 3.3.5 |  | 

### 附录 D：开放表格式升级
<a name="migrating-version-50-appendix-open-table-formats"></a>

下面是开放表格式升级：


| OTF | AWS Glue 5.0 中的连接器版本 | AWS Glue 4.0 中的连接器版本 | AWS Glue 3.0 中的连接器版本 | 
| --- | --- | --- | --- | 
| Hudi | 0.15.0 | 0.12.1 | 0.10.1 | 
| Delta Lake | 3.3.0 | 2.1.0 | 1.0.0 | 
| Iceberg | 1.7.1 | 1.0.0 | 0.13.1 | 