Spark ジョブの AWS Glue の AWS Glue バージョン 5.1 への移行
このトピックでは、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 を選択します。
トピック
新機能
このセクションでは、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) を作成および管理します。詳細については、ブログ記事
を参照してください。 -
Iceberg 形式バージョン 3.0 - データ型と既存のメタデータ構造を拡張して新機能を追加します。詳細については、「Iceberg テーブル仕様
」を参照してください。 -
Hudi フルテーブルアクセス - 定義されたポリシーに基づいて、Apache Spark の Apache Hudi のフルテーブルアクセス (FTA) を制御します。この機能により、ジョブロールにフルテーブルアクセスがある場合は、AWS Glue ETL ジョブからの登録済みテーブルに対する読み取りおよび書き込み操作が有効になります。
-
Spark ネイティブのきめ細かなアクセスコントロール (FGAC) は、登録されている Apache Hive、Apache Iceberg、Delta Lake テーブルのテーブルに対して、DDL/DML 操作 (CREATE、ALTER、DELETE、DROP など) をサポートします。
-
Spark ジョブの監査コンテキスト - ジョブが有効になっている AWS Glue ETL ジョブの監査コンテキストは、ログの AWS Glue および AWS Lake Formation API コールで利用できます。
既知の問題と制限
以下の既知の問題と制限に注意してください。
-
マテリアライズドビューの作成、クエリの書き換え、および増分更新におけるビューの SQL 句のサポートには制限があります。詳細については、Iceberg マテリアライズドビュー機能のドキュメントページを参照してください。
-
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 への移行」を参照してください。
AWS Glue 5.1 に移行するためのアクション
既存のジョブについては、ジョブ設定で、Glue version を以前のバージョンから Glue 5.1 に変更します。
-
AWS 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)を選択します。 -
AWS Glue Studio では、
Glue versionでGlue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3を選択します。 -
API では、
CreateJobAPI オペレーションのGlueVersionパラメータで5.1を選択します。
AWS Glue 2.0 以前で生成された AWS Glue 5.1 Spark イベントログを表示するには、CloudFormation または Docker を使用して AWS Glue 5.1 用にアップグレードされた Spark 履歴サーバーを起動します。
移行チェックリスト
移行については、次のチェックリストを確認してください。
-
[Python] boto リファレンスを 1.34 から 1.40 に更新しました。
AWS Glue 5.0 から AWS Glue 5.1 への移行
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.regionSpark を設定します。 -
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 の移行ドキュメントを参照してください。
古い AWS Glue バージョンから AWS Glue 5.1 への移行
-
AWS Glue 4.0 から AWS Glue 5.0 への移行手順については、「AWS Glue 4.0 から AWS Glue 5.0 への移行」を参照してください。
-
AWS Glue 3.0 から AWS Glue 5.0 への移行手順については、「AWS Glue 3.0 から AWS Glue 5.0 への移行」を参照してください。
-
AWS Glue 2.0 から AWS Glue 5.0 への移行手順と、AWS Glue バージョン 2.0 と 4.0 の移行の相違点をまとめたリストについては、「AWS Glue 2.0 から AWS Glue 5.0 への移行」を参照してください。
AWS Glue 5.1 向けのコネクタと JDBC ドライバーの移行
アップグレードされた JDBC コネクタとデータレイクコネクタのバージョンについては、次を参照してください。
AWS Glue 5.1 の 付録 D: オープンテーブル形式のアップグレード で特定された 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: 注目すべき依存関係のアップグレード
依存関係のアップグレードは次のとおりです。
| 依存関係 | 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 ドライバーのアップグレード
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: コネクタのアップグレード
コネクタのアップグレードは次のとおりです。
| ドライバー | 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: オープンテーブル形式のアップグレード
オープンテーブル形式のアップグレードは次のとおりです。
| 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 |