ゼファーネットのロゴ

AWS Glue for Apache Spark での Apache Hudi、Delta Lake、および Apache Iceberg のネイティブサポートの紹介、パート 1: 開始方法

日付:

AWSグルー サーバーレスでスケーラブルなデータ統合サービスであり、複数のソースからのデータの検出、準備、移動、および統合を容易にします。 AWS Glue は、ユーザーがさまざまなデータ処理のユースケースを使用できるようにする拡張可能なアーキテクチャを提供します。

一般的なユースケースは、データレイクの構築です Amazon シンプル ストレージ サービス (Amazon S3) AWS Glue の抽出、変換、ロード (ETL) ジョブを使用します。 データ レイクは、ビジネス インテリジェンス (BI) ツールによって定義された独自のデータ形式や、独自のストレージの限られた容量から解放されます。 さらに、データ レイクは、データ サイロを分解してエンド ツー エンドのデータ インサイトを最大化するのに役立ちます。 データ レイクのサイズが大きくなり、使用が成熟するにつれて、ファイルがトランザクション的に一貫した方法で更新されるようにすることで、データを最新の状態に保つために多大な労力が費やされる可能性があります。

AWS Glue のお客様は、Apache Hudi、Linux Foundation Delta Lake、および Apache Iceberg というオープンソースのデータ レイク ストレージ フレームワークを使用できるようになりました。 これらのデータ レイク フレームワークは、データを保存し、アプリケーションやフレームワークとデータをやり取りするのに役立ちます。 Apache Parquet、CSV、JSON などの一般的なデータ ファイル形式はビッグ データを格納できますが、データ レイク フレームワークは、分散されたビッグ データ ファイルを表形式の構造にまとめて管理するのが困難です。 これにより、データ レイク テーブル フレームワークは、データ レイク上のデータベースの構築構造になります。

We 一般提供を発表 AWS Glue for Spark での Apache Hudi、Linux Foundation Delta Lake、および Apache Iceberg のネイティブ サポート。 この機能により、個別のコネクタまたは関連する依存関係をインストールし、バージョンを管理する必要がなくなり、AWS Glue for Apache Spark でこれらのフレームワークを使用するために必要な設定手順が簡素化されます。 これらのオープンソース データ レイク フレームワークを使用すると、増分データ処理を簡素化できます。 Amazon S3 上に構築されたデータレイク ACID (原子性、一貫性、分離、耐久性) トランザクション、アップサート、および削除を使用して。

この投稿では、AWS Glue for Apache Spark が Hudi、Delta、および Iceberg データセット テーブルでどのように機能するかを示し、AWS Glue Studio ノートブックでの一般的なユースケースについて説明します。

Glue for Apache Spark で Hudi、Delta、Iceberg を有効にする

新しいジョブ パラメータを指定することで、Hudi、Delta、または Iceberg を使用できます --datalake-formats. たとえば、Hudi を使用する場合は、キーを次のように指定する必要があります。 --datalake-formats 値は hudi です。 オプションが設定されている場合、AWS Glue は必要な JAR ファイルをランタイム Java クラスパスに自動的に追加します。必要なのはそれだけです。 必要なライブラリをビルドして構成したり、別のコネクタをインストールしたりする必要はありません。 このオプションでは、次のライブラリ バージョンを使用できます。

AWS グルーのバージョン フディ デルタ湖 氷山
AWS グルー 3.0 0.10.1 1.0.0 0.13.1
AWS グルー 4.0 0.12.1 2.1.0 1.0.0

上記のライブラリの他のバージョンを使用する場合は、次のオプションのいずれかを選択できます。

上記のオプションのいずれかを選択した場合は、 --datalake-formats ジョブ パラメータが指定されていません。 詳細については、次を参照してください。 Apache Hudi、Delta Lake、Apache Icebergデータセットを大規模に処理するパート1:AWS Glue Studio Notebook.

前提条件

このチュートリアルを続けるには、事前に次の AWS リソースを作成する必要があります。

AWS Glue Studio ノートブックで Hudi、Delta、および Iceberg データセットを処理する

AWS Glue Studio ノートブックは、最小限の設定でサーバーレス ノートブックを提供します。 データ エンジニアと開発者は、データセットをすばやくインタラクティブに探索して処理できます。 経由でパラメータを指定することにより、AWS Glue Studio ノートブックで Hudi、Delta、または Iceberg の使用を開始できます。 %%configure 次のように、AWS Glue のバージョンを 3.0 に設定します。

# Use Glue version 3.0
%glue_version 3.0 # Configure '--datalake-formats' Job parameter
%%configure
{ "--datalake-formats": "your_comma_separated_formats"
}

詳細については、GitHub リポジトリで利用可能なサンプル ノートブックを参照してください。

この投稿では、例として Iceberg DataFrame を使用します。

以下のセクションでは、AWS Glue Studio ノートブックを使用して Iceberg テーブルを作成し、テーブルにレコードを追加する方法について説明します。

Jupyter ノートブックを起動して Iceberg テーブルを処理する

次の手順を実行して、AWS Glue Studio ノートブックを起動します。

  1. ダウンロード Jupyterノートブックファイル.
  2. AWS Glue コンソールで、選択します Jobs > Create New Job ナビゲーション プレーンで。
  3. ジョブを作成選択 ジュピターノート.

  1. 選択 既存のノートブックをアップロードして編集する.
  2. アップロード native_iceberg_dataframe.ipynb   ファイルを選ぶファイルアップロード.

  1. 選択する 作成します。
  2. 職種名、 入る native_iceberg_dataframe.
  3. IAMの役割、IAM ロールを選択します。
  4. 選択する ノートブックジョブを開始する.

Iceberg 構成で SparkSession を準備して構成する

Iceberg テーブルを処理するように SparkSession を構成するには、次の手順を実行します。

  1. 次のセルを実行します。

あなたが見ることができます --datalake-formats 氷山は %%configure Jupyter マジック コマンド。 Jupyter マジックの詳細については、次を参照してください。 Jupyter および AWS Glue Studio ノートブックの AWS Glue インタラクティブ セッションの設定.

  1. 次のセルに Iceberg テーブルの場所の S3 バケット名とバケット プレフィックスを入力し、実行します。

  1. 次のセルを実行して、SparkSession を初期化します。

  1. 必要に応じて、以前にノートブックを実行したことがある場合は、次のセルを実行して既存のリソースをクリーンアップする必要があります。

これで、ノートブックを使用して Iceberg テーブルを作成する準備が整いました。

アイスバーグ テーブルを作成する

ノートブックを使用して Iceberg テーブルを作成するには、次の手順を実行します。

  1. 次のセルを実行して、DataFrame (df_products) 書き込みます。

成功すると、次の表が表示されます。

  1. 次のセルを実行して、DataFrame を使用して Iceberg テーブルを作成します。

  1. これで、次のセルを実行して、Iceberg テーブルからデータを読み取ることができます。

Iceberg テーブルにレコードを追加する

Iceberg テーブルにレコードを追加するには、次の手順を実行します。

  1. 次のセルを実行して、DataFrame (df_products_appends) を追加します。

  1. 次のセルを実行して、レコードをテーブルに追加します。

  1. 次のセルを実行して、前のレコードがテーブルに正常に追加されたことを確認します。

クリーンアップ

継続的な料金が発生しないようにするには、リソースをクリーンアップします。

  1. で手順 4 を実行します。 Iceberg 構成で SparkSession を準備して構成する テーブルと基礎となる S3 オブジェクトを削除するには、この投稿のセクションを参照してください。
  2. AWS Glue コンソールで、選択します Jobs > Create New Job ナビゲーション プレーンで。
  3. ジョブを選択し、 メニュー、選択 ジョブを削除.
  4. 選択する 削除 確認します。

考慮事項

この機能を使用すると、Hudi、Delta、および Iceberg テーブルにアクセスするための XNUMX つの異なるオプションがあります。

  • たとえば、Spark DataFrames spark.read.format("hudi").load("s3://path_to_data")
  • たとえば、SparkSQL SELECT * FROM table
  • たとえば、GlueContext create_data_frame.from_catalog, write_data_frame.from_catalog, getDataFrame, writeDataFrame

詳細については、 AWS Glue で Hudi フレームワークを使用する, AWS Glue で Delta Lake フレームワークを使用する, AWS Glue での Iceberg フレームワークの使用.

Delta Lake ネイティブ統合は、AWS Glue クローラーによってネイティブ Delta Lake テーブルから作成されたカタログ テーブルと連携します。 この統合は、マニフェスト ファイルに依存しません。 詳細については、次を参照してください。 AWS Glue クローラーによるネイティブ Delta Lake テーブル サポートの導入.

まとめ

この投稿では、AWS Glue for Apache Spark を使用して Apache Hudi、Delta Lake、Apache Iceberg データセットを処理する方法を示しました。 ライブラリの依存関係の管理に苦労することなく、これらのデータ レイク形式を使用して簡単にデータを統合できます。

このシリーズの後続の投稿では、AWS Glue Studio を使用して、これらのデータレイク形式のより簡単な構成とセットアップで ETL ジョブを視覚的に作成する方法と、AWS Glue ワークフローを使用してデータパイプラインを調整し、取り込みを自動化する方法を紹介します。 AWS Glue ジョブを使用して、Amazon S3 のデータ レイクに追加します。 乞うご期待!

コメントやフィードバックがある場合は、コメントに残してください。


著者について

味坂 明 AWS Glue チームのシニアソフトウェア開発エンジニアです。 彼はオープンソース ソフトウェアと分散システムが好きです。 余暇には、アーケード ゲームとコンソール ゲームの両方を楽しんでいます。

関山典隆 AWS Glue チームのプリンシパル ビッグ データ アーキテクトです。 彼は、顧客を支援するソフトウェア アーティファクトの構築を担当しています。 余暇には、新しいロードバイクでサイクリングを楽​​しんでいます。

サビオ・ドゥザ AWS Glue チームのソフトウェア開発マネージャーです。 彼のチームは、分散コンピューティング システムとフレームワーク、つまり Apache Spark の構築と革新に取り組んでいます。

スポット画像

最新のインテリジェンス

スポット画像