Spark ジョブの AWS Glue の AWS Glue バージョン 5.1 への移行 - AWS Glue

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 versionGlue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3 を選択します。

  • API では、UpdateJob API オペレーションの GlueVersion パラメータで 5.1 を選択します。

新しいジョブについては、ジョブを作成するときに Glue 5.1 を選択します。

  • コンソールでは、Glue versionSpark 3.5.6, Python 3 (Glue Version 5.1) or Spark 3.5.6, Scala 2 (Glue Version 5.1) を選択します。

  • AWS Glue Studio では、Glue versionGlue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3 を選択します。

  • API では、CreateJob API オペレーションの 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.endpointspark.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 の移行ドキュメントを参照してください。

古い AWS Glue バージョンから AWS Glue 5.1 への移行

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