---
title: Apache Icebergで実現するクラウドDWHから Databricks への実践的データ移行アプローチ
tags: 
author: [manabian](https://www.docswell.com/user/manabian)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LJ1Y1444EG.jpg?width=480
description: Apache Iceberg Meetup Japan #6 Apache Iceberg実践 ! ベストプラクティス での発表資料です。  https://findy.connpass.com/event/394026/
published: June 11, 26
canonical: https://www.docswell.com/s/manabian/54N4JQ-2026-06-10-202315
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LJ1Y1444EG.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GJWG8XXZ72.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4EZL866L73.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/Y76WP22M7V.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/G75MK22Q74.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/9J29W44WER.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/DEY4LMM9JM.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/VJNY4WWD78.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/YE9PQXX8J3.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GE8DG22ZED.jpg)

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


