ゼファーネットのロゴ

Databricks Delta Lake から Apache Iceberg への移行ガイド

日付:

概要

急速に変化する大きな世界で データ処理 分析、広範なデータセットの潜在的な管理は、企業が情報に基づいた意思決定を行うための基礎的な柱として機能します。データから有益な洞察を抽出するのに役立ちます。 Databricks Delta Lake や Apache Iceberg など、ここ数年でさまざまなソリューションが登場しました。これらのプラットフォームはデータ レイク管理用に開発されており、どちらも堅牢な機能を提供します。しかし、組織にとっては、既存のプラットフォームを移行するためのアーキテクチャ、技術的、機能的側面のニュアンスを把握する必要があります。この記事では、Databricks Delta Lake から Apache Iceberg に移行する複雑なプロセスについて説明します。

学習目標

  • Databricks と Apache Iceberg の機能を理解します。
  • Databricks と Apache Iceberg のアーキテクチャ コンポーネントを比較する方法を学びます。
  • デルタ レイク アーキテクチャを Iceberg のようなオープンソース プラットフォームに移行するためのベスト プラクティスを理解します。
  • デルタ レイク プラットフォームの代替として他のサードパーティ ツールを利用するため。

この記事は、の一部として公開されました データサイエンスブログ。

目次

Databricks Delta Lake について理解する

Databricks Delta Lake は基本的に、Databricks Delta Lake の上に構築された洗練されたストレージ層です。 Apache Spark フレームワーク。シームレスなデータ管理のために開発されたいくつかの最新のデータ機能を提供します。 Delta Lake には、その核となるさまざまな機能があります。

  • ACID トランザクション: Delta Lake は、ユーザー データのすべての変更に対して原子性、一貫性、分離性、耐久性の基本原則を保証し、堅牢で有効なデータ操作を保証します。
  • スキーマの進化: 柔軟性は主に次のようなものによってもたらされます。 デルタ湖スキーマの進化をシームレスにサポートするため、業界は本番環境の既存のデータ パイプラインを妨げることなくスキーマの変更を実行できます。
  • 時間旅行: SF 映画のタイムトラベルと同じように、デルタ レイクは特定の時点でのデータ スナップショットをクエリする機能を提供します。したがって、ユーザーはデータの包括的な履歴分析とバージョン管理機能を深く掘り下げることができます。
  • 最適化されたファイル管理: Delta Lake は、データ ファイルとメタデータを整理および管理するための堅牢な技術をサポートしています。これにより、クエリのパフォーマンスが最適化され、ストレージ コストが軽減されます。

Apache Icebergの特徴

Apache Iceberg は、強化されたデータ レイク管理ソリューションを求める企業に競争力のある代替手段を提供します。 Icebergs は、Parquet や ORC などのいくつかの従来のフォーマットを上回ります。独特の利点がたくさんあります。

  • スキーマの進化: ユーザーは、コストのかかるテーブルの書き換えを行わずにスキーマ変更を実行しながら、スキーマ進化機能を利用できます。
  • スナップショットの分離: Iceberg はスナップショット分離のサポートを提供するため、一貫した読み取りと書き込みが保証されます。データの整合性を損なうことなく、テーブルの同時変更が容易になります。
  • メタデータ管理: この機能は基本的にメタデータをデータ ファイルから分離します。そして、データファイル自体とは異なる専用のリポジトリに保存します。これは、パフォーマンスを向上させ、効率的なメタデータ操作を可能にするために行われます。
  • パーティションのプルーニング: 高度なプルーニング技術を活用し、クエリ実行中にスキャンされるデータを削減することでクエリのパフォーマンスを最適化します。

アーキテクチャの比較分析

アーキテクチャの比較分析をさらに詳しく見てみましょう。

Databricks デルタレイクのアーキテクチャ

  • ストレージレイヤー: Delta Lake は、Amazon S3 などのクラウド ストレージを利用します。 アズールブロブ ストレージの基礎となる層として、データ ファイルとトランザクション ログの両方で構成されます。
  • メタデータ管理: メタデータはトランザクション ログ内に残ります。したがって、効率的なメタデータ操作が可能になり、データの一貫性が保証されます。
  • 最適化手法:デルタ湖では大量の資源が利用されています。 最適化手法。これには、クエリのパフォーマンスを大幅に向上させ、データのスキャン時のオーバーヘッドを削減するためのデータ スキップと Z オーダーが含まれています。
Databricks デルタレイクのアーキテクチャ

Apache アイスバーグのアーキテクチャ

  • メタデータの分離: と比較すると違いがあります データブリック メタデータをデータ ファイルから分離するという点で。 Iceberg はメタデータをデータ ファイルとは別のリポジトリに保存します。
  • トランザクションサポート: データの整合性と信頼性を確保するために、Iceberg は堅牢なトランザクション プロトコルを誇ります。このプロトコルは、アトミックで一貫したテーブル操作を保証します。
  • 互換性: Apache Spark、Flink、Presto などのエンジンは、Iceberg と容易に互換性があります。開発者は、これらのリアルタイムおよびバッチ処理フレームワークで Iceberg を柔軟に使用できます。
Apache アイスバーグのアーキテクチャ

移行状況のナビゲート: 考慮事項とベスト プラクティス

Databricks Delta Lake から Apache Iceberg への移行を実装するには、膨大な量の計画と実行が必要です。次のような考慮事項を考慮する必要があります。

  • スキーマの進化: Delta Lake と Iceberg のスキーマ進化機能間の完璧な互換性を保証し、スキーマ変更時の一貫性を維持します。
  • データ移行: データの量、ダウンタイムの要件、データの一貫性などの要素を考慮して戦略を策定し、導入する必要があります。
  • クエリの互換性: Delta Lake と Iceberg の間のクエリの互換性について確認する必要があります。これにより移行がスムーズに行われ、既存のクエリ機能は移行後もそのまま残ります。
  • 性能 テスト: 広範なパフォーマンス テストと回帰テストを開始して、クエリのパフォーマンスをチェックします。氷山とデルタ湖の間の資源の利用状況もチェックする必要があります。このようにして、最適化の対象となる可能性のある領域を認識できます。

移行の場合、開発者は、Iceberg および Databricks のドキュメントからいくつかの事前定義されたコード スケルトンを使用し、同じものを実装できます。手順は以下に記載されており、ここで使用される言語は Scala です。

ステップ 1: デルタレイクテーブルを作成する

最初のステップでは、S3 バケット内にデータを作成する前に、SXNUMX バケットが空で検証されていることを確認します。データ作成プロセスが完了したら、次のチェックを実行します。

ステップ 1: デルタレイクテーブルを作成する
val data=spark.range(0,5)
data.write.format("delta").save("s3://testing_bucket/delta-table")

spark.read.format("delta").load("s3://testing_bucket/delta-table")
デルタレイクテーブルの作成
デルタレイクテーブルの作成

オプションのバキュームコードの追加

#adding optional code for vaccum later
val data=spark.range(5,10)
data.write.format("delta").mode("overwrite").save("s3://testing_bucket/delta-table")

ステップ 2 : CTAS とデルタ湖テーブルの読み取り

#reading delta lake table
spark.read.format("delta").load("s3://testing_bucket/delta-table")

ステップ 3: Delta Lake を読み取り、Iceberg テーブルに書き込む

val df_delta=spark.read.format("delta").load("s3://testing_bucket/delta-table")
df_delta.writeTo("test.db.iceberg_ctas").create()
spark.read.format("iceberg").load("test.db.iceberg.ctas)

S3 の Iceberg テーブルにダンプされたデータを確認する

Delta Lake の読み取りと Iceberg テーブルへの書き込み
Delta Lake の読み取りと Iceberg テーブルへの書き込み

シンプルさ、パフォーマンス、互換性、サポートの観点からサードパーティ製ツールを比較します。という 2 つのツールです。 AWS Glue DataBrew と Snowflake には、独自の機能セットが付属しています。

AWS グルー DataBrew

移行プロセス:

  • 使いやすさ: AWS Glue DataBrew は AWS クラウドの製品であり、データのクリーニングと変換タスクにユーザーフレンドリーなエクスペリエンスを提供します。
  • 統合: Glue DataBrew は、他の Amazon クラウド サービスとシームレスに統合できます。 AWS を利用している組織は、このサービスを利用できます。

機能セット:

  • データ変換: データ変換 (EDA) のための大規模な機能セットが付属しています。データ移行時に便利です。
  • 自動プロファイリング: 他のオープン ソース ツールと同様に、DataBrew はデータを自動的にプロファイリングします。不一致を検出し、変換タスクを推奨します。

パフォーマンスと互換性:

  • スケーラビリティ: 移行プロセス中に発生する可能性のある大規模なデータセットを処理するために、Glue DataBrew はそれを処理するためのスケーラビリティも提供します。
  • 互換性: 幅広いフォーマットおよびデータ ソースとの互換性を提供するため、さまざまなストレージ ソリューションとの統合が容易になります。

スノーフレーク

移行プロセス:

  • 移行の容易さ: 簡素化のために、Snowflake には、エンド ユーザーが既存のデータ ウェアハウスから Snowflake プラットフォームに移行するのに役立つ移行サービスがあります。
  • 包括的なドキュメント: Snowflake は、移行プロセスを開始するための膨大なドキュメントと十分な量のリソースを提供します。

機能セット:

  • データウェアハウス機能: 幅広いウェアハウジング機能を提供し、半構造化データ、データ共有、データ ガバナンスをサポートします。
  • 並行性: このアーキテクチャは高い同時実行性を可能にし、厳しいデータ処理要件を持つ組織に適しています。

パフォーマンスと互換性:

  • 性能: Snowflake はスケーラビリティの面でもパフォーマンス効率が高く、エンドユーザーが膨大な量のデータを簡単に処理できるようになります。
  • 互換性: Snowflake は、さまざまなデータ ソース用のさまざまなコネクタも提供するため、さまざまなデータ エコシステムとの相互互換性が保証されます。
"

まとめ

データ レイクとウェアハウス管理のワークフローを最適化し、ビジネスの成果を引き出すには、組織にとって移行が不可欠です。業界は、機能とアーキテクチャーおよび技術的な差異の点で両方のプラットフォームを活用し、データセットの可能性を最大限に活用するためにどちらを選択するかを決定できます。長期的には組織にも役立ちます。動的かつ急速に変化するデータ環境において、革新的なソリューションにより組織は常に緊張状態を保つことができます。

主要な取り組み

  • Apache Iceberg は、スナップショットの分離、効率的なメタデータ管理、パーティション プルーニングなどの優れた機能を提供し、データ レイク管理機能の向上につながります。
  • Apache Iceberg への移行には、慎重な計画と実行が必要です。組織は、スキーマの進化、データ移行戦略、クエリの互換性などの要素を考慮する必要があります。
  • Databricks Delta Lake はクラウド ストレージを基盤となるストレージ レイヤーとして活用し、データ ファイルとトランザクション ログを保存します。一方、Iceberg はデータ ファイルからメタデータを分離し、パフォーマンスとスケーラビリティを強化します。
  • 組織は、ストレージ コスト、コンピューティング料金、ライセンス料金、移行に必要なアドホック リソースなどの財務上の影響も考慮する必要があります。

よくある質問

Q1. Databricks Delta Lake から Apache Iceberg への移行プロセスはどのように実行されますか?

A. Databricks Delta Lake からデータをエクスポートし、必要に応じてクリーンアップして、Apache Iceberg テーブルにインポートする必要があります。

Q2.手動介入なしで移行を支援できる自動ツールはありますか?

A. 組織は通常、カスタム Python/Scala スクリプトと ETL ツールを利用してこのワークフローを構築します。

Q3.移行のプロセス中に組織が遭遇する一般的な課題は何ですか?

A. 発生する可能性が非常に高い課題としては、データの整合性、スキーマ進化の差異の処理、移行後のパフォーマンスの最適化などがあります。

Q4. Apache Iceberg と、Parquet や ORC などの他のテーブル形式との違いは何ですか?

A. Apache Iceberg は、Parquet や ORC とは異なる、スキーマの進化、スナップショットの分離、効率的なメタデータ管理などの機能を提供します。

Q5.クラウドベースのストレージ ソリューションで Apache Iceberg を使用できますか?

A. Apache Iceberg は、AWS S3、Azure Blob Storage、Google Cloud Storage などの一般的に使用されるクラウドベースのストレージ ソリューションと互換性があります。

この記事に示されているメディアは Analytics Vidhya が所有するものではなく、著者の裁量で使用されています。

スポット画像

最新のインテリジェンス

スポット画像