

# Spark ジョブの AWS Glue の AWS Glue バージョン 5.1 への移行
<a name="migrating-version-51"></a>

このトピックでは、AWS Glue バージョン 0.9、1.0、2.0、3.0、4.0、5.0 の間の変更点について説明し、Spark アプリケーションと ETL ジョブを AWS Glue 5.1 に移行できるようにします。また、AWS Glue 5.1 の機能とそれを使用する利点についても説明します。

この機能を AWS Glue ETL ジョブに使用するには、ジョブを作成するとき、`Glue version` として **5.1** を選択します。

**Topics**
+ [

## 新機能
](#migrating-version-51-features)
+ [

## AWS Glue 5.1 に移行するためのアクション
](#migrating-version-51-actions)
+ [

## 移行チェックリスト
](#migrating-version-51-checklist)
+ [

## AWS Glue 5.0 から AWS Glue 5.1 への移行
](#migrating-version-51-from-50)
+ [

## 古い AWS Glue バージョンから AWS Glue 5.1 への移行
](#migrating-older-versions-to-51)
+ [

## AWS Glue 5.1 向けのコネクタと JDBC ドライバーの移行
](#migrating-version-51-connector-driver-migration)

## 新機能
<a name="migrating-version-51-features"></a>

このセクションでは、AWS Glue バージョン 5.1 の新機能と利点について説明します。
+ Apache Spark が AWS Glue 5.0 の 3.5.4 から AWS Glue 5.1 の 3.5.6 に更新されました。
+ オープンテーブルフォーマット (OTF) が Hudi 1.0.2、Iceberg 1.10.0、Delta Lake 3.3.2 に更新
+ **Iceberg マテリアライズドビュー** - Iceberg マテリアライズドビュー (MV) を作成および管理します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/introducing-apache-iceberg-materialized-views-in-aws-glue-data-catalog/)を参照してください。
+ **Iceberg 形式バージョン 3.0** - データ型と既存のメタデータ構造を拡張して新機能を追加します。詳細については、「[Iceberg テーブル仕様](https://iceberg.apache.org/spec/)」を参照してください。
+ **Hudi フルテーブルアクセス** - AWS Lake Formation で定義されたポリシーに基づいた Apache Spark の Apache Hudi のフルテーブルアクセス (FTA) コントロール。この機能により、ジョブロールにフルテーブルアクセスがある場合は、AWS Glue ETL ジョブからの AWS Lake Formation 登録済みテーブルに対する読み取りおよび書き込み操作が有効になります。
+ **AWS Lake Formation を使用した Spark ネイティブのきめ細かなアクセスコントロール (FGAC) サポート** - AWS Lake Formation に登録されている Apache Hive、Apache Iceberg、Delta Lake の各テーブルに対するきめ細かなアクセスコントロールによる DDL/DML 操作 (CREATE、ALTER、DELETE、DROP など)。
+ **Spark ジョブの監査コンテキスト** - AWS Glue ETL ジョブの監査コンテキストは、AWS CloudTrail ログの AWS Glue および AWS Lake Formation API コールで利用できます。

**既知の問題と制限**  
以下の既知の問題と制限に注意してください。
+ マテリアライズドビューの作成、クエリの書き換え、および増分更新におけるビューの SQL 句のサポートには制限があります。詳細については、[Iceberg マテリアライズドビュー機能のドキュメントページ](https://docs.aws.amazon.com/lake-formation/latest/dg/materialized-views.html#materialized-views-considerations-limitations)を参照してください。
+ **Hudi FTA 書き込み**では、ジョブ実行中の認証情報の払い出しに HoodieCredentialedHadoopStorage を使用する必要があります。Hudi ジョブを実行するときは、次の設定を行います。

  `hoodie.storage.class=org.apache.spark.sql.hudi.storage.HoodieCredentialedHadoopStorage` 
+ Hudi FTA 書き込みサポートは、デフォルトの Hudi 設定でのみ機能します。カスタムまたはデフォルト以外の Hudi 設定は完全にサポートされていない可能性があり、予期しない動作が発生する可能性があります。Hudi Merge-On-Read (MOR) テーブルのクラスタリングも、FTA 書き込みモードではサポートされていません。

**重要な変更**  
以下の最新の変更点に注意してください。
+  S3A ファイルシステムは、EMRFS をデフォルトの S3 コネクタとして置き換えました。統合する方法について詳細は、「[AWS Glue 5.0 から AWS Glue 5.1 への移行](#migrating-version-51-from-50)」を参照してください。

## AWS Glue 5.1 に移行するためのアクション
<a name="migrating-version-51-actions"></a>

既存のジョブについては、ジョブ設定で、`Glue version` を以前のバージョンから `Glue 5.1` に変更します。
+ AWS Glue Studio では、`Glue version` で `Glue 5.1 - Supports Spark 3.5.6, 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.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)` を選択します。
+ AWS Glue Studio では、`Glue version` で `Glue 5.1 - Supports Spark 3.5.6, 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.1** を選択します。

AWS Glue 2.0 以前で生成された AWS Glue 5.1 Spark イベントログを表示するには、[CloudFormation または Docker を使用して AWS Glue 5.1 用にアップグレードされた Spark 履歴サーバーを起動します](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html)。

## 移行チェックリスト
<a name="migrating-version-51-checklist"></a>

移行については、次のチェックリストを確認してください。
+ [Python] boto リファレンスを 1.34 から 1.40 に更新しました。

## AWS Glue 5.0 から AWS Glue 5.1 への移行
<a name="migrating-version-51-from-50"></a>

AWS Glue 5.0 に存在する既存のすべてのジョブパラメータと主要な機能は、AWS Glue 5.1 に存在します。移行時には、次の変更点に注意してください。
+ AWS Glue 5.1 では、S3A ファイルシステムは、EMRFS をデフォルトの S3 コネクタとして置き換えました。`spark.hadoop.fs.s3a.endpoint` と `spark.hadoop.fs.s3a.endpoint.region` の両方が設定されていない場合、S3A で使用されるデフォルトのリージョンは `us-east-2` です。これにより、特に VPC ジョブの場合、S3 アップロードタイムアウトエラーなどの問題が発生する可能性があります。この変更によって発生する問題を軽減するには、AWS Glue 5.1 で S3A ファイルシステムを使用するときに `spark.hadoop.fs.s3a.endpoint.region` Spark を設定します。
+ S3A の代わりに EMRFS を引き続き使用するには、次のスパーク設定を行います。

  ```
      --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 の移行ドキュメントを参照してください。
+ [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 バージョンから AWS Glue 5.1 への移行
<a name="migrating-older-versions-to-51"></a>
+ AWS Glue 4.0 から AWS Glue 5.0 への移行手順については、「[AWS Glue 4.0 から AWS Glue 5.0 への移行](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-40)」を参照してください。
+ AWS Glue 3.0 から AWS Glue 5.0 への移行手順については、「[AWS Glue 3.0 から AWS Glue 5.0 への移行](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-30)」を参照してください。
+ AWS Glue 2.0 から AWS Glue 5.0 への移行手順と、AWS Glue バージョン 2.0 と 4.0 の移行の相違点をまとめたリストについては、「[AWS Glue 2.0 から AWS Glue 5.0 への移行](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-20)」を参照してください。

## AWS Glue 5.1 向けのコネクタと JDBC ドライバーの移行
<a name="migrating-version-51-connector-driver-migration"></a>

アップグレードされた JDBC コネクタとデータレイクコネクタのバージョンについては、次を参照してください。
+ [付録 B: JDBC ドライバーのアップグレード](#migrating-version-51-appendix-jdbc-driver)
+ [付録 C: コネクタのアップグレード](#migrating-version-51-appendix-connector)
+ [付録 D: オープンテーブル形式のアップグレード](#migrating-version-51-appendix-open-table-formats)

AWS Glue 5.1 の [付録 D: オープンテーブル形式のアップグレード](#migrating-version-51-appendix-open-table-formats) で特定された OTF バージョンアップグレードには、次の変更が適用されます。

**Apache Hudi**  
次の変更があります。
+ Lake Formation 登録済みテーブルでの FTA 読み取りおよび書き込みアクセスをサポートします。

**Apache Iceberg**  
次の変更があります。
+ Iceberg 形式バージョン 3 をサポートします。次の機能がサポートされています。
  + パーティション化とソートのためのマルチ引数変換。
  + 行リネージュ追跡。
  + 削除ベクトル。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/unlock-the-power-of-apache-iceberg-v3-deletion-vectors-on-amazon-emr/)をご覧ください 
  + テーブル暗号化キー。
  + 列のデフォルト値のサポート。
+ AWS Lake Formation 登録済みのテーブルに対する Spark ネイティブの FGAC 書き込みをサポートします。
+ Athena SQL 互換性 - 次のエラーのため、EMR Spark によって作成された Iceberg V3 テーブルを読み取ることはできません: `GENERIC_INTERNAL_ERROR: Cannot read unsupported version 3`

**Delta Lake**  
次の変更があります。
+ Lake Formation 登録済みテーブルでの FTA 読み取りおよび書き込みアクセスをサポートします。

### 付録 A: 注目すべき依存関係のアップグレード
<a name="migrating-version-51-appendix-dependencies"></a>

依存関係のアップグレードは次のとおりです。


| 依存関係 | AWS Glue 5.1 でのバージョン | AWS Glue 5.0 でのバージョン | AWS Glue 4.0 でのバージョン | AWS Glue 3.0 でのバージョン | AWS Glue 2.0 でのバージョン | AWS 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 | 
| AWS Glue データカタログクライアント | 4.9.0 | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | 該当なし | 
| AWS 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 ドライバーのアップグレード
<a name="migrating-version-51-appendix-jdbc-driver"></a>

JDBC ドライバーのアップグレードは次のとおりです。


| ドライバー | AWS Glue 5.1 での 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.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 Database | 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: コネクタのアップグレード
<a name="migrating-version-51-appendix-connector"></a>

コネクタのアップグレードは次のとおりです。


| ドライバー | AWS Glue 5.1 のコネクタバージョン | AWS Glue 5.0 のコネクタバージョン | AWS Glue 4.0 のコネクタバージョン | AWS 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: オープンテーブル形式のアップグレード
<a name="migrating-version-51-appendix-open-table-formats"></a>

オープンテーブル形式のアップグレードは次のとおりです。


| OTF | AWS Glue 5.1 のコネクタバージョン | AWS Glue 5.0 のコネクタバージョン | AWS Glue 4.0 のコネクタバージョン | AWS 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 | 