DatabricksとSnowflakeをつなぐ最新データ相互利用術

3.7K Views

April 22, 25

スライド概要

「Cross Data Platforms Meetup #1」にて、「DatabricksとSnowflakeをつなぐ最新データ相互利用術」というタイトルで発表したい際の資料です。

profile-image

manabian の資料です。

シェア

またはPlayer版

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

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Cross Data Platforms Meetup #1 DatabricksとSnowflakeを つなぐ最新データ相互利用術 manabian 本資料に関するリンク

2.

はじめに ◼ Databricks と Snowflake 間における構造化データの統合手法について解説します。近年、 異なる DWH 間でのデータ統合と相互運用性の確保が注目されており、その基本的な概念 を整理した上で、実際の統合手法の具体例を紹介します。

3.

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

4.

私のアウトプット 1/2 データ分析基盤の構築方法論や関連テクノロジーの調査だけでなく、 エラー対応方法などいわゆる上流から下流までの記事を投稿しています。 データ分析基盤における 構築方法論 引用元:最強のデータ分析基盤を目指して~汎用的なデータ分析基盤の選定方法の 提案~ - Qiita 関連テクノロジーの調査 引用元:データエンジニアリングの背景を踏まえてdbt(Data Build Tool)を少 し深く理解してみる #Python - Qiita

5.

私のアウトプット 2/2 Snowflake における Apache Iceberg 機能も整理しています。 Apache Iceberg を理解するには、 Spark で体験することがおすすめです。 Apache Iceberg on Snowflake 引用元:Snowflake における Apache Iceberg の機能の完全ガイド: Apache Iceberg on Snowflake 活用の第一歩 #Spark - Qiita Spark on Google Colab 引用元:Google Colab の Spark にて Hadoop Catalog の Apache Iceberg の動 作検証 #iceberg - Qiita

6.

データ統合と相互運用性

7.

データ統合と相互運用性とは データ統合とは、散在するデータを一貫した形式に統合するプロセスです。実際にデータ を統合するだけでなく、システム間で連携できる能力である相互運用性の確保まで含めて 捉える必要があります。システムだけでなく、運用体制まで検討する必要があります。 DMBOK においても、データガバナンスを考える上で重要な領域の1つとされています。 出所:データマネジメント知識体系ガイド 第二版 改定新版 | 日経BOOKプラス 出所:『データマネジメント知識体系ガイド 第二版』 DAMA International編著、DAMA日本支部、Metafindコンサルティング株式 会社 監訳、日経BP

8.

データ統合の 2 分類 (1/2) データ統合は、データを事前に移動・集約するかどうかにより2つに分類され、データをあ らかじめ一箇所に集約する方法が物理データ統合、集約せずに仮想的に統合する方法が仮 想データ統合です。 Delta Lake や Apache Iceberg などの Open Table Format (OTF)を利用する場合には、 データファイルを指定箇所に集約することから、物理データ統合に該当します。 物理データ統合 データ統合 仮想データ統合

9.

データ統合の 2 分類 (2/2) 物理データ統合と仮想データ統合は特性が異なるため、目的や利用シーンに応じた適切な 使い分けが不可欠です。 仮想データ統合はデータを移動させることなくハブ化できる理想的なアプローチと見なさ れがちですが、性能やコスト面での注意が必要です。

10.

組織におけるデータ統合 (1/2) DWH などの分析基盤を構築する際、多くの場合、業務システムからデータを取り込むこと から始まります。

11.

組織におけるデータ統合 (2/2) 最近では、データ分析システムの高度化や汎用化に伴い、DWH から業務系システムにデー タ統合(リバース ETL)や異なる DWH 間でのデータ統合が重要となっています。

12.

本資料におけるデータ統合の検討対象 本資料では、 DatabricksとSnowflake間のデータ統合の方法論を対象とします。 DWH へデータ移動するだけでなく、DWH からのデータ提供方法の検討も必要です。

13.

DatabricksとSnowflake間の データ統合の実施に向けて

14.

データ統合する際のデータローディングパターン データロード方法の主なパターンは下表のとおりで、実務では パターン 1 と 2 が最も一般 的です。 # 連携方法 データローディングパターン 1 全件連携 最後に連携されたデータにより上書きする処理 2 差分連携 差分データにより Upsert する処理 3 差分連携 特定のカラム値により選択的上書きする処理 4 差分連携 一定期間のデータを上書きする処理 5 差分連携 連携されたデータを Append する処理 6 履歴連携 7 履歴連携 8 OTFによる連携 タイムスタンプにより管理する SCD Type 2 として 差分履歴データを連携する処理 ソースシステムの主キー列と INGEST_TIMESTAMP に基づき UPSERT 処理連携する処理 Open Table Format (OTF)によりデータを相互利用する方法

15.

DWH 間でデータ統合に必要となる機能 実装するパターンに応じて、必要となる機能の検討が必要です。過去には、書き込み処理 中のテーブルの参照ロックを考慮する必要もありました。 # 機能名 概要 1 テーブルの上書き機能 テーブルデータをソースのデータに置き換える機能。 CTAS や OVERWRITE により書き込むことが多い。 2 変更データ提供機能 テーブルにおけるデータの変更内容を提供する機能。 DELETE レコードの特定が重要な論点。 3 ファイル取り込み機能 指定したディレクトリ上にあるデータを取り込む機能。 ファイルのメタデータの取得や冪等性の担保ができることが理想。 4 データ取得機能 他システムからデータを取得する機能。 5 書き込み時のスキーマ進化機能 (スキーマ展開機能) ソースデータに応じてカラムの追加やデータ型の変更を行う機能。

16.

Databricks にてデータ統合を行う際の主要トピック Databricks にてデータ統合を実施する際には、下記に示す項目を理解することが重要です。 メダリオンアーキテクチャの採用が推奨されていること。 変更データを特定する方法としてチェンジデータフィード(CDF)という機能があること。 異なるストレージ上にデータを同期したいときには、DEEP CLONE 機能があること。 Snowflake に書き込む際には、 JDBC コネクターではなく、 Spark コネクターの利用が 推奨されていること。 ファイルを取り込む方法として、 Databricks Auto Loader という機能があること。 CTAS などのデータ書き込み時に、スキーマ進化(スキーマ展開)と型拡張を実施できるこ と。 テーブルを Apache Iceberg テーブルとして提供可能な UniForm 機能があること。 他データストアから論理データ統合が可能な Lakehouse Federation 機能があること。 Unity Catalog が有効なクラスターで Apache Iceberg を参照する方法が不明であること。

17.

Snowflakeにてデータ統合を行う際の主要トピック Snowflake にてデータ統合を実施する際には、下記に示す項目を理解することが重要です。 マイクロパーティションのファイルサイズが他の DWH の推奨仕様と異なること。 変更データを特定する方法として、STREAM という機能があること。 STREAM をソースとした CTAS 時にカラム追加とデータ型変更が可能であること。 ファイルを取り込む方法として COPY INTO があり、テーブルスキーマの進化が可能であ ること。 クラウドストレージ上の Apache Iceberg をテーブルとして登録できること Delta Lake 形式のディレクトリを Apache Iceberg テーブルとして登録できること。

18.

DatabricksとSnowflake間の データ統合パターン

19.

データ統合方法例 (1/3) Databricks -> Snowflake での全件連携 Snowflake にて Databricks のテーブルを Apache Iceberg テーブルとして登録し、下記 の処理を定期的に実行します。 CTAS 処理により Apache Iceberg テーブルのデータを実体化 ソース テーブル Apache Iceberg テーブル 1. CTAS 処理 連携後 テーブル

20.

データ統合方法例 (2/3) Snowflake -> Databricks での差分連携 Snowflake にてソーステーブルの STREAM を作成し、下記の処理を定期的に実行します。 CTAS 処理により STREAM のデータを実体化 実体化したテーブルのデータを Databricks の Bronze テーブルに連携 Bronze テーブルのデータを Silver テーブルに連携 Databricks ソース テーブル STREAM 1. CTAS 処理 実体化 テーブル 2.Append 処理 Bronze テーブル 3. Merge 処理 Silver テーブル

21.

データ統合方法例 (3/3) Databricks -> SnowflakeでのOTFによる連携 Snowflake にて Databricks のテーブルを Apache Iceberg テーブルとして登録します。 本方法例のユースケースの1つに、他 Snowflake アカウントへのデータ共有があります。 詳細については、リンク先の記事に記述しています。 ソース テーブル Apache Iceberg テーブル Secure Data Sharing Apache Iceberg テーブル

22.

Databricks と Snowflake 間でのデータ統合方法の整理 Snowflake にて Databricks 間でデータ統合を整理すると、下記表のような方法がありま す。赤字の方法は本資料で説明した連携方法です。 データ統合方法 Databricks -> Snowflake Snowflake -> Databricks 全件連携 ✓ Spark により Overwrite ✓ Iceberg テーブルをソースとして CTAS ✓ 外部サービスにより書き込み後に CTAS 差分連携 ✓ CDF データを Merge ✓ STREAM データを Merge OTFによる連携 ✓ UniForm にて Iceberg テーブル化 ✓ Delta Lake をIceberg テーブル化 (実施方法を確認できず) 仮想データ統合 (実施方法を確認できず) ✓ Lakehouse Federation 機能を利用

23.

ありがとうございました 参考になった記事には いいねをお願いします manabian 𝕏: @manabian Qiita: manabian 本資料に関するリンク