翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
での Apache Iceberg の使用 AWS Glue
AWS Glue
AWS Glue ジョブは、Apache Sparkor
で Iceberg ジョブを作成する場合 AWS Glue、 のバージョンに応じて AWS Glue、ネイティブ Iceberg 統合またはカスタム Iceberg バージョンを使用して Iceberg 依存関係をジョブにアタッチできます。
ネイティブ Iceberg 統合の使用
AWS Glue バージョン 3.0、4.0、5.0 は、 AWS Glue for Spark で Apache Iceberg、Apache Hudi、Linux Foundation Delta Lake などのトランザクションデータレイク形式をネイティブにサポートしています。この統合機能により、これらのフレームワークの使用を開始するために必要な設定手順が簡素化されます AWS Glue。
AWS Glue ジョブの Iceberg サポートを有効にするには、ジョブを設定します。 AWS Glue ジョブの詳細タブを選択し、高度なプロパティのジョブパラメータにスクロールして、キーを に設定--datalake-formats
し、その値を に設定しますiceberg
。
ノートブックを使用してジョブを作成する場合は、次のように %%configure
マジックを使用して、最初のノートブックセルで パラメータを設定できます。
%%configure { "--conf" : <job-specific Spark configuration discussed later>, "--datalake-formats" : "iceberg" }
--datalake-formats
の AWS Glue iceberg
の設定は、バージョンに基づいて特定の Iceberg AWS Glue バージョンに対応しています。
AWS Glue バージョン | Iceberg のデフォルトバージョン |
---|---|
5.0 |
1.7.1 |
4.0 |
1.0.0 |
3.0 |
0.13.1 |
カスタム Iceberg バージョンの使用
状況によっては、ジョブの Iceberg バージョンに対するコントロールを保持し、自分のペースでアップグレードする場合があります。たとえば、新しいバージョンにアップグレードすると、新機能やパフォーマンスの強化へのアクセスをロック解除できます。で特定の Iceberg バージョンを使用するには AWS Glue、独自の JAR ファイルを指定できます。
カスタム Iceberg バージョンを実装する前に、ドキュメントAWS Glue のバージョンセクション AWS Glue を確認して、環境との AWS Glue 互換性を確認してください。たとえば、 AWS Glue 5.0 には Spark 3.5.4 との互換性が必要です。
例えば、Iceberg バージョン 1.9.1 を使用する AWS Glue ジョブを実行するには、次の手順に従います。
-
必要な JAR ファイルを取得して Amazon S3 にアップロードします。
-
Apache Maven リポジトリから iceberg-spark-runtime-3.5_2.12-1.9.1.jar
と iceberg-aws-bundle-1.9.1.jar をダウンロードします。 -
これらのファイルを指定された S3 バケットの場所 ( など
s3://your-bucket-name/jars/
) にアップロードします。
-
-
次のようにジョブの AWS Glue ジョブパラメータを設定します。
-
--extra-jars
パラメータで両方の JAR ファイルへの完全な S3 パスをカンマで区切って指定します (例:s3://your-bucket-name/jars/iceberg-spark-runtime-3.5_2.12-1.9.1.jar,s3://your-bucket-name/jars/iceberg-aws-bundle-1.9.1.jar
)。 -
--datalake-formats
パラメータの値として、iceberg
を含めないようにしてください。 -
AWS Glue 5.0 を使用する場合は、
--user-jars-first
パラメータを に設定する必要がありますtrue
。
-
での Iceberg の Spark 設定 AWS Glue
このセクションでは、Iceberg データセットの AWS Glue ETL ジョブの作成に必要な Spark 設定について説明します。これらの設定は、Spark --conf
キーとすべての Spark 設定キーと値のカンマ区切りリストを使用して設定できます。ノートブックで %%configure
マジックを使用するか、 AWS Glue Studio コンソールの ジョブパラメータ セクションを使用できます。
%glue_version 5.0 %%configure { "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...", "--datalake-formats" : "iceberg" }
次のプロパティを使用して Spark セッションを設定します。
-
<catalog_name>
は Iceberg Spark セッションカタログ名の名前です。任意の名前に置き換え、このカタログに関連付けられているすべての設定で参照を必ず変更してください。コードでは、次のように Spark セッションカタログ名を含む完全修飾テーブル名を使用して Iceberg テーブルを参照できます。<catalog_name>.<database_name>.<table_name>
または、デフォルトカタログを、 をカタログ名に設定して定義した Iceberg カタログ
spark.sql.defaultCatalog
に変更することもできます。この 2 番目のアプローチを使用して、カタログプレフィックスのないテーブルを参照できるため、クエリを簡素化できます。 -
<catalog_name>.<warehouse>
は、データとメタデータを保存する Amazon S3 パスを指します。 -
カタログを にするには AWS Glue Data Catalog、
spark.sql.catalog.<catalog_name>.type
を に設定しますglue
。このキーは、カスタムカタログ実装の実装クラスを指すために必要です。Iceberg でサポートされているカタログについては、このガイドの後半にある「一般的なベストプラクティス」セクションを参照してください。
たとえば、 というカタログがある場合glue_iceberg
、次のように複数の--conf
キーを使用してジョブを設定できます。
%%configure { "--datalake-formats" : "iceberg", "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_iceberg=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_iceberg.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_iceberg.type=glue" }
または、次のようにコードを使用して、上記の設定を Spark スクリプトに追加することもできます。
spark = SparkSession.builder\ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")\ .config("spark.sql.catalog.glue_iceberg", "org.apache.iceberg.spark.SparkCatalog")\ .config("spark.sql.catalog.glue_iceberg.warehouse","s3://<your-warehouse-dir>/")\ .config("spark.sql.catalog.glue_iceberg.type", "glue") \ .getOrCreate()
AWS Glue ジョブのベストプラクティス
このセクションでは、Iceberg テーブルへのデータの読み取りと書き込みを最適化 AWS Glue するために、 で Spark ジョブを調整するための一般的なガイドラインを提供します。Iceberg 固有のベストプラクティスについては、このガイドの後半にある「ベストプラクティス」セクションを参照してください。
-
の最新バージョンを使用し AWS Glue 、可能な限りアップグレードする – の新しいバージョン AWS Glue では、パフォーマンスの向上、起動時間の短縮、新機能が提供されます。また、最新の Iceberg バージョンに必要な新しい Spark バージョンもサポートしています。利用可能な AWS Glue バージョンとそれらがサポートする Spark バージョンのリストについては、 AWS Glue ドキュメントを参照してください。
-
AWS Glue ジョブメモリの最適化 – AWS ブログ記事「 でのメモリ管理の最適化 AWS Glue
」の推奨事項に従ってください。 -
Use AWS Glue Auto Scaling – Auto Scaling を有効にすると、 はワークロードに基づいて AWS Glue ワーカーの数 AWS Glue を自動的に調整します。これにより、ワークロードが小さく、ワーカーがアイドル状態のときにワーカー数がスケールダウンされるため AWS Glue 、ピーク負荷時の AWS Glue ジョブのコストを削減できます。 AWS Glue Auto Scaling を使用するには、ジョブをスケーリングできる AWS Glue ワーカーの最大数を指定します。詳細については、 ドキュメントの AWS Glue 「 の自動スケーリングAWS Glue の使用」を参照してください。
-
目的の Iceberg バージョンを使用する – Iceberg の AWS Glue ネイティブ統合は、Iceberg の使用を開始するのに最適です。ただし、本番ワークロードの場合は、ライブラリの依存関係 (このガイドで前述) を追加して、Iceberg バージョンを完全に制御することをお勧めします。このアプローチは、ジョブにおける最新の Iceberg 機能とパフォーマンスの向上のメリットを享受する AWS Glue のに役立ちます。
-
モニタリングとデバッグのために Spark UI を有効にする – の Spark UI AWS Glue を使用して、Spark ジョブのさまざまなステージを有向非巡回グラフ (DAG) で視覚化し、ジョブを詳細にモニタリングすることで、Iceberg ジョブを検査することもできます。Spark UI は、Iceberg ジョブのトラブルシューティングと最適化の両方に効果的な方法を提供します。例えば、シャッフルやディスクスピルが大きいボトルネックステージを特定して、調整の機会を特定できます。詳細については、 ドキュメントの「Apache Spark ウェブ UI を使用したジョブのモニタリング AWS Glue 」を参照してください。