翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
での Apache Iceberg の使用 AWS Glue
AWS Glue
AWS Glue ジョブは、Apache Spark
で Iceberg ジョブを作成する場合 AWS Glue、 のバージョンに応じて AWS Glue、ネイティブ Iceberg 統合またはカスタム Iceberg バージョンを使用して Iceberg 依存関係をジョブにアタッチできます。
ネイティブ Iceberg 統合の使用
AWS Glue バージョン 3.0 および 4.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" }
カスタム Iceberg バージョンの使用
状況によっては、ジョブの Iceberg バージョンの制御を保持し、自分のペースでアップグレードしたい場合があります。例えば、新しいバージョンにアップグレードすると、新機能やパフォーマンスの強化へのアクセスをロック解除できます。で特定の Iceberg バージョンを使用するには AWS Glue、カスタムコネクタまたは独自の JAR ファイルを使用できます。
カスタムコネクタの使用
AWS Glue はコネクタをサポートしています。コネクタは、 のデータストアへのアクセスを支援するオプションのコードパッケージです AWS Glue Studio。でコネクタをサブスクライブすることも AWS Marketplace、カスタムコネクタを作成することもできます。
注記
AWS Marketplace は、 用の Apache Iceberg コネクタを提供します AWS Glue
例えば、Iceberg バージョン 0.13.1 のカスタマーコネクタを作成するには、次の手順に従います。
-
ファイル
iceberg-spark-runtime-3.1_2.12-0.13.1.jar
、bundle-2.17.161.jar
、およびurl-connection-client-2.17.161.jar
を Amazon S3 バケットにアップロードします。これらのファイルは、それぞれの Apache Maven リポジトリからダウンロードできます。 -
AWS Glue Studio コンソール
で、カスタム Spark コネクタを作成します。 -
ナビゲーションペインで、データ接続 を選択します。(古いナビゲーションを使用している場合は、「コネクタ」、「カスタムコネクタの作成」を選択します。)
-
コネクタボックスで、カスタムコネクタの作成 を選択します。
-
カスタムコネクタの作成ページで、次の操作を行います。
-
Amazon S3 の JAR ファイルへのパスを指定します。
-
コネクタの名前を入力します。
-
コネクタタイプとして Spark を選択します。
-
クラス名 には、
format
演算子を使用して Spark データソースをロードするときに使用する完全修飾データソースクラス名 (またはそのエイリアス) を指定します。 -
(オプション) コネクタの説明を入力します。
-
-
3. [コネクターを作成] をクリックします。
でコネクタを使用する場合は AWS Glue、コネクタの接続を作成する必要があります。接続には、特定のデータストアへの接続に必要なプロパティが含まれます。ETL ジョブでは、データソースおよびデータターゲットとの接続を使用します。コネクタと接続は、データストアへのアクセスを容易にするために連携して動作します。
作成したカスタム Iceberg コネクタを使用して接続を作成するには:
-
AWS Glue Studio コンソール
で、カスタム Iceberg コネクタを選択します。 -
プロンプトに従って、VPC やジョブに必要なその他のネットワーク設定などの詳細を指定し、接続の作成 を選択します。
AWS Glue ETL ジョブで接続を使用できるようになりました。ジョブの作成方法に応じて、接続をジョブにアタッチする方法は異なります。
-
を使用してビジュアルジョブを作成する場合は AWS Glue Studio、データソースプロパティ – コネクタタブの接続リストから接続を選択できます。
-
ノートブックでジョブを開発する場合は、
%connections
マジックを使用して接続名を設定します。%glue_version 3.0 %connections <name-of-the iceberg-connection> %%configure { "--conf" : "job-specific Spark configurations, to be discussed later", "--datalake-formats" : "iceberg" }
-
スクリプトエディタを使用してジョブを作成する場合は、「ジョブの詳細」タブの「高度なプロパティ」、「追加のネットワーク接続」で接続を指定します。
このセクションの手順の詳細については、 AWS Glue ドキュメントの「 でのコネクタと接続 AWS Glue Studioの使用」を参照してください。
独自の JAR ファイルを持ち込む
では AWS Glue、コネクタを使用せずに Iceberg を使用することもできます。このアプローチは、Iceberg バージョンに対する制御を保持し、すばやく更新する場合に役立ちます。このオプションを使用するには、必要な Iceberg JAR ファイルを任意の S3 バケットにアップロードし、 AWS Glue ジョブ内のファイルを参照します。例えば、Iceberg 1.0.0 を使用している場合、必要な JAR ファイルは iceberg-spark-runtime-3.0_2.12-1.0.0.jar
、url-connection-client-2.15.40.jar
、および ですbundle-2.15.40.jar
。ジョブの --user-jars-first
パラメータを に設定することで、クラスパス内の追加の JAR ファイルの優先順位true
を付けることもできます。
での Iceberg の Spark 設定 AWS Glue
このセクションでは、Iceberg データセットの AWS Glue ETL ジョブを作成するために必要な Spark 設定について説明します。これらの設定は、Spark キーとすべての --conf
Spark 設定キーと値のカンマ区切りリストを使用して設定できます。ノートブックで %%configure
マジックを使用するか、 AWS Glue Studio コンソールの ジョブパラメータ セクションを使用できます。
%glue_version 3.0 %connections <name-of-the iceberg-connection> %%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>
-
<catalog_name>.<warehouse>
は、データとメタデータを保存する Amazon S3 パスを指します。 -
カタログを にするには AWS Glue Data Catalog、
<catalog_name>.catalog-impl
を に設定しますorg.apache.iceberg.aws.glue.GlueCatalog
。このキーは、カスタムカタログ実装の実装クラスを指すために必要です。Iceberg でサポートされているカタログについては、このガイドの後半にある「一般的なベストプラクティス一般的なベストプラクティス」セクションを参照してください。 -
Amazon S3 マルチパートアップロードを利用して高並列処理を実現する
<catalog_name>.io-impl
には、org.apache.iceberg.aws.s3.S3FileIO
として を使用します。
例えば、 というカタログがある場合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.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog ", "‐‐conf" : " spark.sql.catalog.glue_iceberg.io-impl=org.apache.iceberg.aws.s3.S3FileIO }
または、次のようにコードを使用して、上記の設定を 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.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \ .config("spark.sql.catalog.glue_iceberg.io-impl", "org.apache.iceberg.aws.s3.S3FileIO") \ .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 の最大数を指定します。詳細については、 ドキュメントの「 の Auto Scaling AWS Glue の使用 AWS Glue 」を参照してください。
-
カスタムコネクタを使用するか、ライブラリの依存関係を追加する - 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 」を参照してください。