NTT DATA TECH
🧊

「Helper Iceberg Migrator」を使ってSnowflakeネイティブテーブルをIcebergテーブルへ移行してみた

に公開

1. はじめに

Snowflake では近年、Iceberg Tablesや外部テーブル連携などオープンテーブルフォーマットへの対応が急速に拡張されています。その中で、Snowflake Innovation Team(SIT)が公開しているツールセット Emerging Solutions Toolboxは、実験的・実用的なユーティリティが多く、Snowflake技術者としては是非触っておきたい内容になっています。

今回はその中でも Helper Iceberg Migrator を実際に使い、Snowflake NativeテーブルをIcebergテーブルへ移行してみた検証結果を紹介します。
Helper iceberg migrator

この記事は、NTTデータ Snowflakeアドベントカレンダーの3日目です。

2. Helper Iceberg Migrator とは

https://github.com/Snowflake-Labs/emerging-solutions-toolbox/tree/main/helper-iceberg-migrator

Helper Iceberg Migratorは、Snowflake Innovation Teamが提供するツールで、Icebergを活用したモダンデータプラットフォーム移行を支援するためのユーティリティです。
Snowflake の通常サービスではありませんが、Innovation Teamが実践的なユースケースに基づいて設計しており、実プロジェクトのPoCや技術検証で活用できます。このツールにより、SnowflakeのネイティブテーブルとDeltaテーブルをIcebergテーブルに一括移行できます。

3. このツールでできることは大きく2つ

Iceberg Migratorにより、SnowflakeネイティブテーブルとDeltaテーブルをIcebergテーブルに一括移行できます。このツールは、以下のユースケースに最適です。

1. SnowflakeテーブルからIcebergファイルへの移行

Migrating existing Snowflake tables to Iceberg files at a designated cloud storage location. This may be beneficial for customers who want to make their Snowflake data available outside of Snowflake, but have Snowflake manage the Iceberg metadata and catalog.

既存のSnowflakeテーブルを、指定されたクラウドストレージのIcebergファイルに移行します。これは、SnowflakeデータをSnowflakeの外部で利用できるようにしたいが、IcebergのメタデータとカタログはSnowflakeで管理したいというお客様にとって有益です。

2. Delta Lake 統合

Delta Lake Integration. This may be beneficial for customers who want their Delta Lake tables directly integrated with Snowflake, for querying and managing Delta Lake data within the Snowflake ecosystem.

Delta Lake 統合。これは、Delta Lake テーブルを Snowflake に直接統合し、Snowflake エコシステム内で Delta Lake データのクエリと管理を行いたいお客様にとって有益です。

4. 「SnowflakeテーブルからIcebergファイルへの移行」を実際にやってみる

ここからは、実際に Iceberg Migratorの導入方法(Snowflake Notebook)SnowflakeテーブルからIcebergファイルへの移行方法(Streamlit in Snowflake) を紹介します。
Iceberg Migratorの導入には外部アクセス統合を利用します。トライアルアカウントでは、外部アクセス統合の利用制限があるのでご注意ください。
本記事で実施する内容

4-1. Helper Iceberg Migratorの導入方法

  1. リポジトリに移動しinstaller/im_install.ipynbをダウンロードします。

https://github.com/Snowflake-Labs/emerging-solutions-toolbox/tree/main/helper-iceberg-migrator

  1. Snowflake Notebookでim_install.ipynbをインポートします。

  2. Githubからデータを取得するために外部アクセス統合を作成します。新規のSQLセルを作成して、テンプレートをコピペして実行します。

  1. 本Notebookで外部アクセス統合を利用するために、設定を変更・保存します。
  2. STEP1~STEP4のセルを実行すると、Streamlit in Snowflakeアプリが作成されます。

4-2. SnowflakeテーブルからIcebergファイルへの移行方法

移行元テーブルとして、サンプルデータ(SNOWFLAKE_SAMPLE_DATA.TPCH_SF1の8テーブル)をネイティブテーブル用のDB・スキーマ(SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA)にて実体化します。
その後、上記の検証用のネイティブテーブルを、Iceberg用のDB・スキーマ(ICEBERG_DATABASE.ICEBERG_SCHEMA)にIcebergテーブルとして移行します。

4-2-1. 下準備

  1. ダミーデータ作成のために、SNOWFLAKE_SAMPLE_DATAデータベースを作成します。
CREATE DATABASE SNOWFLAKE_SAMPLE_DATA FROM SHARE SFC_SAMPLES.SAMPLE_DATA;
  1. 上記データをネイティブテーブルとして実体化します。(後ほどIcebergへ移行します)
DB・スキーマ・テーブル作成
CREATE DATABASE SNOWFLAKE_DATABASE;
CREATE SCHEMA SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA;
CREATE OR REPLACE TABLE SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA.CUSTOMER AS
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER;
CREATE OR REPLACE TABLE SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA.LINEITEM AS
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM;
CREATE OR REPLACE TABLE SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA.NATION AS
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.NATION;
CREATE OR REPLACE TABLE SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA.ORDERS AS
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS;
CREATE OR REPLACE TABLE SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA.PART AS
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.PART;
CREATE OR REPLACE TABLE SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA.PARTSUPP AS
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.PARTSUPP;
CREATE OR REPLACE TABLE SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA.REGION AS
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION;
CREATE OR REPLACE TABLE SNOWFLAKE_DATABASE.SNOWFLAKE_SCHEMA.SUPPLIER AS
  SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.SUPPLIER;
  1. Icebergテーブルを保持するためのデータベースとスキーマを用意します。
CREATE DATABASE ICEBERG_DATABASE;
CREATE SCHEMA ICEBERG_DATABASE.ICEBERG_SCHEMA;

4-2-2. Icebergテーブル化

  1. Streamlitから「ICEBERG_MIGRATOR」アプリを起動します。
  • 実行内容に応じた前提条件(Prerequisites)が記載されているので、必要な権限はこちらから確認できます。
(1) 外部ボリューム作成
  1. 外部ボリュームを作成していきます。
  2. GUIで簡単に作成できます。
  • ※外部ボリューム作成後、IAMロールの信頼ポリシーの修正が必要です。
(2) テーブル移行
  1. SnowflakeネイティブテーブルをIcebergテーブルへ移行していきます。
  2. GUIで、移行対象テーブルと移行先のDBとスキーマを設定します。
  3. 移行設定は、初期設定でも可能。(必要に応じてパラメータを調整します)
  4. 設定内容を確認して「Convert」を押すと、非同期で処理が開始されます。
  5. ログページから状況を確認してみます。
  6. 設定した8テーブルの移行が成功しているようです。
(3) 結果確認
  1. テーブルを確認すると、Icebergテーブルが作成されていることを確認できます。
SHOW TABLES IN SCHEMA ICEBERG_DATABASE.ICEBERG_SCHEMA;

  1. 中身も普通に参照できます。

  2. S3側を確認すると、Icebergファイルが作成されていることを確認できます。

5. まとめ:思ったより簡単!

Iceberg Migratorを使ったところ、SnowflakeテーブルのIcebergテーブル移行は想像よりずっとスムーズでした。

  • ipynbファイルをインポートして実行するだけで環境準備完了。
  • Streamlit上でGUIで簡単にテーブル移行が実行可能。
  • Snowflake上でIceberg テーブルを簡単に扱える。

SnowflakeがIcebergをファーストクラスで扱い始めたことで、データ共有・データレイク戦略の幅が一気に広がったと感じます。
今後はIceberg Migratorの他機能も検証し、“Snowflake × Iceberg のハイブリッド運用” の可能性をさらに探っていきたいと思います。

6. 仲間募集

NTTデータ ソリューション事業本部 では、以下の職種を募集しています。

Snowflake、生成AIを活用したデータ基盤構築/活用支援(Snowflake Data Superheroesとの協働)
Databricks、生成AIを活用したデータ基盤構築/活用支援(Databricks Championとの協働)
プロジェクトマネージャー(データ分析プラットフォームソリューションの企画~開発~導入/生成AI活用)
クラウドを活用したデータ分析プラットフォームの開発(ITアーキテクト/PM/クラウドエンジニア)

7. ソリューション紹介

Trusted Data Foundationについて

~データ資産を分析活用するための環境をオールインワンで提供するソリューション~
https://www.nttdata.com/jp/ja/lineup/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ(Datalake+DWH+AI/BI)を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

TDFⓇ-AM(Trusted Data Foundation - Analytics Managed Service)について

~データ活用基盤の段階的な拡張支援(Quick Start) と保守運用のマネジメント(Analytics Managed)をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス~
https://www.nttdata.com/jp/ja/lineup/tdf_am/
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

NTTデータとSnowflakeについて

NTTデータとSnowflakeについて
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。
NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。
https://www.nttdata.com/jp/ja/lineup/snowflake/

NTTデータとDatabricksについて

NTTデータは、お客様企業のデジタル変革・DXの成功に向けて、「databricks」のソリューションの提供に加え、情報活用戦略の立案から、AI技術の活用も含めたアナリティクス、分析基盤構築・運用、分析業務のアウトソースまで、ワンストップの支援を提供いたします。
https://www.nttdata.com/jp/ja/lineup/databricks/

NTT DATA TECH
NTT DATA TECH
設定によりコメント欄が無効化されています