私たちの多くは、後に進化する要件に基づいてデータを変更しています。気づいた時にはもう巻き戻すことは不可能になってしまいます。変化は単なる定常的なものではありません。これは、洗練されたアプローチを必要とするデータ管理の重要な部分です。 Dremio のデータ カタログ Nessie の Git に似た機能を入力します。
Git がソフトウェア開発の基礎となっているのと同じように、データ エンジニアも並行して作業し、データ バージョンを比較し、運用環境への変更を促進し、必要に応じてデータをロールバックするための同様のツールを必要としています。 Nessie は、データ エンジニアに、データのバージョン、ブランチ、マージ、コミットを管理するための Git のようなバージョン管理システムを提供します。これは、複数のデータ エンジニアが同時にデータを操作および変換する場合に非常に役立ちます。 Nessie を使用すると、各エンジニアがメイン ブランチの形式で単一の真実の情報源を維持しながら、別々のブランチで作業できるようになります。この機能により、データ エンジニアリング チームは、絶え間ない変化に直面しても協力してデータ品質を維持できるようになります。
この記事では、Nessie、Dremio、MinIO がどのように連携してデータ エンジニアリング ワークフローのデータ品質とコラボレーションを強化するかを示すステップバイステップのガイドを提供します。データ エンジニア、ML エンジニア、または単なる最新のデータ レイク愛好家であっても、このブログでは、データのバージョン管理の実践を効果的に強化するために必要な知識とツールを提供します。
Nessie を使用すると、テスト、開発、本番環境へのプッシュを可能にする Git のようなワークロードが可能になります。いくつかの重要な概念を詳しく見てみましょう。
ブランチ: Git と同様に、Nessie のブランチを使用すると、さまざまなデータ エンジニアリング タスクを同時に実行できます。たとえば、機能開発、データ クリーニング、データ変換のためのブランチがあるとします。各ブランチには独自のデータ変更セットを含めることができます。
コミット: Nessie では、コミットは特定の時点でのデータのスナップショットを表します。データに変更を加えると、その変更を記録する新しいコミットが作成されます。コミットは特定のブランチにリンクされます。データを安定した状態または正常な状態に戻す必要がある場合、Nessie を使用すると、特定のコミットを選択してそのデータ バージョンにロールバックすることが簡単にできます。これにより、データの品質と一貫性が保証されます。
マージ: Nessie を使用すると、あるブランチから別のブランチに変更をマージできます。これは、Git でのコード変更のマージに似ています。ブランチをマージすると、そのブランチで行われたデータ変更はターゲット ブランチの一部になります。
Dremioは、オープンソース プラットフォームとして動作する分散分析エンジンで、データ探索、変換、共同作業のための直感的なセルフサービス インターフェイスを提供します。そのデザインの基礎となっているのは、
Dremio を Kubernetes でデプロイする方法と、
MinIOは高性能オブジェクト ストレージです。格別なことで有名
必要になります。
チュートリアルのこの部分は Dremio の
まず、ターミナルを開き、リポジトリをクローン/ダウンロードしたフォルダーに移動し、以下のコマンドを実行して Dremio を起動します。
docker-compose up dremio
しばらく待ってからhttp://localhost:9047
に移動して Dremio にアクセスします。要求されたフィールドを更新し、「次へ」をクリックします。
次に、次のコマンドを実行して MinIO を起動します。
docker-compose up minio
以下の最後のdocker-compose up
コマンドは Nessie を起動します。
docker-compose up nessie
http://localhost:9001
に移動し、ユーザー名とパスワードminioadmin:minioadmin
を使用して MinIO にログインします。バケットを作成するように求められます。
iceberg-datalake
という名前のファイルを作成します。
次にhttp://localhost:9047
の Dremio に戻り、[Add Source] をクリックして、Nessie を選択します。
nessie
に設定しますhttp://nessie:19120/api/v2
に設定します。none
に設定します
まだ「保存」をクリックしないでください。代わりに、左側のナビゲーション パネルで、[ストレージ] をクリックします。 MinIOはS3-API互換のオブジェクトストレージであり、AWS S3と同じ接続経路を利用できます。
minioadmin
を設定します。minioadmin
を設定します。/iceberg-datalake
に設定します
次の一連の手順については、下にスクロールしてください。
Connection Properties
の下にあるAdd Property
ボタンをクリックして、次のプロパティを作成および構成します。fs.s3a.path.style.access
をtrue
に設定fs.s3a.endpoint
からminio:9000
dremio.s3.compat
をtrue
に設定Encrypt connection
チェックボックスをオフにします
次に、「保存」をクリックします。データ ソースにネッシー カタログが表示されるようになりました。
Dremio で、左側の SQL Runner に移動します。テキスト エディターの右上領域にあるContext
Nessie ソースに設定されていることを確認します。それ以外の場合、このクエリを実行するには、単にSalesData
ではなく、 nessie.SalesData
のようなコンテキストを参照する必要があります。以下の SQL をコピーして貼り付けて実行します。
CREATE TABLE SalesData ( id INT, product_name VARCHAR, sales_amount DECIMAL, transaction_date DATE ) PARTITION BY (transaction_date);
以下のクエリを実行して、作成したテーブルにデータを挿入します。
INSERT INTO SalesData (id, product_name, sales_amount, transaction_date) VALUES (1, 'ProductA', 1500.00, '2023-10-15'), (2, 'ProductB', 2000.00, '2023-10-15'), (3, 'ProductA', 1200.00, '2023-10-16'), (4, 'ProductC', 1800.00, '2023-10-16'), (5, 'ProductB', 2200.00, '2023-10-17');
MinIO に戻って、データ レイクに Iceberg テーブルが設定されていることを確認します。
http://localhost:9047
の Dremio に戻ります。まず、 AT BRANCH
構文を使用してメイン ブランチのテーブルをクエリします。
SELECT * FROM nessie.SalesData AT BRANCH main;
ETL (抽出、変換、ロード) ブランチを作成すると、運用環境に影響を与えることなくデータを操作および変換できるようになります。
CREATE BRANCH etl_06092023 in nessie
ETL ブランチ内で、テーブルに新しいデータを挿入します。
USE BRANCH etl_06092023 in nessie; INSERT INTO nessie.SalesData (id, product_name, sales_amount, transaction_date) VALUES (6, 'ProductC', 1400.00, '2023-10-18');
ETL ブランチ内で新しいデータがすぐに利用できることを確認します。
SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;
メイン ブランチ上のユーザーからの変更が分離されていることに注意してください。
SELECT * FROM nessie.SalesData AT BRANCH main;
ETL ブランチからの変更をメイン ブランチにマージして戻します。
MERGE BRANCH etl_06092023 INTO main in nessie;
メイン ブランチを再度選択して、変更が実際にマージされていることを確認します。
SELECT * FROM nessie.SalesData AT BRANCH main
この分岐戦略により、データ エンジニアは複数のテーブルにわたる多数のトランザクションを独立して処理できるようになります。準備ができたら、データ エンジニアはこれらのトランザクションをメイン ブランチ内の単一の包括的なマルチテーブル トランザクションにマージできます。
このブログ投稿では、データ エンジニアリングにおける Git のようなバージョン管理の力を詳しく掘り下げ、どのように機能するかを強調しました。
あなたのデータレイクハウスがどのようなものかを教えてください
ここにも登場します。