Apache Icebergで実現するクラウドDWHから Databricks への実践的データ移行アプローチ

>100 Views

June 11, 26

スライド概要

Apache Iceberg Meetup Japan #6 Apache Iceberg実践 ! ベストプラクティス での発表資料です。

https://findy.connpass.com/event/394026/

profile-image

manabian の資料です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

Apache Iceberg Meetup Japan #6 Apache Iceberg実践 ! ベストプラクティス Apache Icebergで実現する クラウドDWHから Databricks への 実践的データ移行アプローチ manabian 本資料に関するリンク 後で変更

2.

はじめに Apache Iceberg を起点に、クラウドDWHから Databricks へデータを移行した取り組み をご紹介します。Iceberg 活用の一つのユースケースとしてご覧いただければ幸いです。 移行元 DWH がどの製品であったかは本質ではありませんので Apache Iceberg の実践事例としてお聞きください。 Databricks 開発環境 移行元 DWH 移行対象のテーブル (非 Iceberg) Apache Iceberg テーブル Databricksのテーブル (OTF)

3.

自己紹介 【主業務】 レイクハウス・DWH・BI構築に関するSIベンダーにてフェローとして、 次の業務を実施。 • データエンジニアリングの実装論の整理とライブラリ開発 • データ分析基盤とアプリケーションの設計・構築に関する支援 • データ分析基盤に関する技術検証 @manabian 【趣味】 趣味がデータ分析基盤に関する調査や検証であり、 主に Qiita を中心に データ分析基盤プラットフォームに関する記事を 投稿。

4.

Apache Iceberg による データ移行のアプローチ

5.

Apache Iceberg を活用したデータ移行方法の概要 10TB を超える転送量であり、各 DWH が独立して処理を完結できるよう、 ストレージを介した連携方式を採用しました。 フォーマットとして Parquet ファイルも検討しましたが、処理を複数ステップに分ける可 能性があり、各ステップの結果を移行元 DWH 上でテーブルとして確認できる方法が望ま しいと判断し、Iceberg テーブルを採用しました。 移行元 DWH 開発環境 Databricks 移行対象の テーブル (非 Iceberg) Databricks の テーブル (OTF) Apache Iceberg テーブル

6.

活用時にぶつかった 2 つの壁 Iceberg 活用時に 2つの壁にぶつかりました。 ①DWH (カタログ)間で通信ができず → Metadata File から Clone を実施 移行元 DWH の Iceberg カタログ Databricks の Iceberg カタログ Metadata File Databricks の Clone 機能 ②ナノ秒精度のタイムスタンプがサポート外 → 桁数を切り捨てて移行 (DEEP or SHALLOW) 引用元:Apache Iceberg v3の機能を使用する | Databricks on AWS

7.

データ移行方法のステップ 下記のステップにて、無事に想定の時間内(夜間リリース)が完了しました 移行元テーブルから一時 Iceberg テーブルにタイムスタンプを文字型にして全件上書きを 実施 一時 Iceberg テーブルから一時 Databricks テーブルへメタデータファイルから Clone を実施 一時 Databricks テーブルから移行先テーブルへ INSERT を実施 開発環境 移行元 DWH 移行元テーブル (非 Iceberg) 1. INSERT OVERWRITE ②一時 Iceberg テーブル 2. CLONE ③一時 Databricks テーブル (OTF) 3. INSERT ④Databricks の 移行先テーブル (OTF)

8.

<参考> 外部 Iceberg テーブルによる新旧比較 移行先のデータを Iceberg テーブルとして参照できる場合、移行元 DWH 上に外部 Iceberg テーブルを定義することで、データを移動させることなく、 DWH の処理性能を活かしてテーブルの同等性(新旧比較)を検証できます。 具体的には、件数の一致、キー項目の一意性、レコードの差分などを確認します。 開発環境 移行元 DWH データ取り込み / データ変換 移行元テーブル (非 Iceberg) ①平行稼働 で処理 データ取り込み / データ変換 移行先テーブル (Iceberg 参照化) ②同等性確認 移行先テーブルの 外部 Iceberg テーブル

9.

まとめ Apache Iceberg をデータ移行時の一時テーブルとして使ってみました。性能のコント ロールが容易であり、おそらくコストパフォーマンスに優れた方法として、クラウドDWH からDatabricksへデータ移行した取り組みをご紹介しました。 ちなみに、データ移行後にタイムトラベルの指定ミスによりデータ移行に一部漏れが発覚 しました。その場合でも、同様のステップで再処理可能でした。 開発環境 移行元 DWH 移行元テーブル (非 Iceberg) 1. INSERT OVERWRITE ②一時 Iceberg テーブル 2. CLONE ③一時 Databricks テーブル (非 Iceberg) 3. INSERT ④Databricks の 移行先テーブル (OTF)

10.

ありがとうございました 参考になった記事には いいねをお願いします manabian 𝕏: @manabian Qiita: manabian