Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unity Catalog 技術ディープダイブ

Unity Catalog 技術ディープダイブ

Unity Catalogについてアーキテクチャから詳しく説明します。

Databricks Japan

May 27, 2024
Tweet

More Decks by Databricks Japan

Other Decks in Technology

Transcript

  1. ©2023 Databricks Inc. — All rights reserved データブリックス ジャパン株式会社 1

    Unity Catalog 技術ディープダイブ 実践者向け プレイブック
  2. ©2023 Databricks Inc. — All rights reserved 本資料はData + AI

    Summit 2023のセッションを日本語訳したものです。 オリジナルのセッション動画(英語)を以下YouTubeよりご覧頂けます。 A Technical Deep Dive into Unity Catalog's Practitioner Playbook https://www.youtube.com/watch?v=LzmmObc_Bmw 2
  3. ©2023 Databricks Inc. — All rights reserved 3 この情報は、Databricksの一般的な製品の方向性を概説するために提供される ものであり、情報提供のみを目的としています。

    Databricksのサービスを購入さ れるお客様は、現在利用可能なサービス、特徴および機能のみに依拠して購入 を決定してください。将来予想に関する記述に記載されている未発表の特徴また は機能は、Databricksの裁量で変更される可能性があり、計画通りまたは全く 提供されない可能性があります。 製品に関する免責事項
  4. ©2023 Databricks Inc. — All rights reserved データとAIの一元的な可視化 データとAIの一元的な権限モデル AI搭載のモニタリングと可観測性

    オープンなデータ共有 Databricks Unity Catalog データとAIの統合ガバナンス メタデータ管理 (ファイル | テーブル | MLモデル | ノートブック | ダッシュボード) アクセス 制御 リネージ データ検出 監視 共有 Databricks Unity Catalog 監査 4
  5. ©2023 Databricks Inc. — All rights reserved Databricks Lakehouseが データとAIのガバナンスを統合

    外部のコンピューティング プラットフォーム BI & データ ウェアハウス データ エンジニアリング データ ストリーミング データ サイエンス & ML オープンな インターフェイス Unity Catalog データとAIの一元的なガバナンスモデル データフェデレーション クラウドデータレイク 構造化、半構造化、非構造化のあらゆるデータ カタログ フェデレーション 5
  6. ©2023 Databricks Inc. — All rights reserved 組織のガバナンスのグラデーション 6 中央チームが

    プロダクション向けの データ成果物を管理 中央集権型 ドメインチームが データ成果物の作成を主導 分散型 中央チームがガバナンスの ポリシーを適用・施行 ドメインチームが データの権限を管理
  7. ©2023 Databricks Inc. — All rights reserved • Unity Catalogとクラウドプロバイダー

    • Unity Catalogへのデータの登録 • データのセキュリティ • 検索とリネージによるデータの検出 • データの監査 • オープンなデータ共有 • Unity Catalogへのアップグレード • アーキテクチャーパターン • デモ アジェンダ 7
  8. ©2023 Databricks Inc. — All rights reserved Databricksアカウントとクラウドプロバイダー 9 Entra

    ID テナント Azure サブスクリプション Azure サブスクリプション Databricks ワークスペース Databricks ワークスペース Azure Databricks ア カウント アカウント コンソール Databricks ワークスペース
  9. ©2023 Databricks Inc. — All rights reserved アカウント コンソール Databricksアカウントとクラウドプロバイダー

    10 Organizational Unit (OU; 組織単位) AWS アカウント AWS アカウント Databricks ワークスペース Databricks ワークスペース Databricks ア カウント AWS GCP エンタイトルメント Google Cloud プロジェクト Google Cloud プロジェクト Databricks ワークスペース Databricks ワークスペース Databricks ア カウント マーケットプレイス アカウント アカウント コンソール
  10. ©2023 Databricks Inc. — All rights reserved Unity Catalogとクラウドリソースのマッピング AWS

    Azure GCP Databricksアカウント AWSアカウント Entra IDテナント マーケットプレイスアカウント メタストア リージョン リージョン リージョン カタログ AWSアカウント* Azureサブスクリプション* Google Cloudプロジェクト* ストレージロケーション S3バケット ADLSアカウント GCSバケット 資格情報 IAMロール マネージドID サービスアカウント 11 * 最低1つ、2つ以上はオプション
  11. ©2023 Databricks Inc. — All rights reserved Unity Catalogの主要なロール アカウント管理者グループ

    • ワークスペースを作成できる • メタストアを作成 & 設定できる • ユーザー, グループ, サービスプリンシパルを作成できる • クレデンシャルを作成できる • ユーザーにワークスペースへのアクセス権を付与できる • 推奨: 基盤管理チーム / 中央ガバナンスチーム メタストア管理者グループ • CATALOG, EXTERNAL LOCATIONを作成できる • SHARE, RECIPIENTを作成できる • セキュリティ保護可能なオブジェクトの所有者を 変更できる • 推奨: 基盤管理チーム / 中央ガバナンスチーム • 推奨: データーオーナーへの権限移譲 ワークスペース管理者グループ • ワークスペースにユーザーとグループを追加できる • クラスター & クラスターポリシーを作成できる • クラスタ、ワークフロー、ノートブック、クエリ、ダッシュボード の所有者を変更できる • 推奨: IT/基盤/DevOpsチーム • 推奨: サービスプリンシパルの定期的な監査 データオーナーグループ • セキュリティ保護可能なオブジェクトの所有者を変更 できる (CATALOG, SCHEMA, TABLE, VIEW, etc.) • 任意のプリンシパルに任意の特権を付与できる • 推奨: 事業部ガバナンスチーム / 中央ガバナンスチーム 12 ロールをグループに割り当てる
  12. ©2023 Databricks Inc. — All rights reserved 13 • データとコンピューティングは通常、ソフトウェア開発のライフサ

    イクル(DEV, PRODなど) に沿ってクラウドの中央のサブスクリ プション/アカウント/プロジェクトに格納される • 1つのチームがクラウドの インフラを管理 → 1つのチームがクレ デンシャルと外部ロケーションの作成 を管理 • 1つのチームがデータを作成 → 1つのチームが本番パイプライ ンを管理 • 1つのチームがガバナンスとアクセス を管理 → 1つのチームがメ タストアとカタログ、権限 を管理する • 中央チームがクラウドとDatabricks両方の管理責任を担う クラウド設計のベストプラクティス 中央集権型 組織のパターンによって使用方法を決定する 分散型 • 各チームはデータの分離とコストの配分のために 独自のサ ブスクリプション / アカウント / プロジェクトをクラウド上で持 ち、独自のストレージとコンピューティングを所有 → 各チーム が独自のカタログとワークスペース を所有 • 多数または1つのチームがクラウドの インフラを管理 → 多数 または1つのチームがクレデンシャルと外部ロケーションの作 成を管理 • 多数のチームがデータを作成 → 各チームが独自のワークス ペース/パイプライン を管理 • 各チームがクラウドとDatabricks両方の管理責任を共有
  13. ©2023 Databricks Inc. — All rights reserved 15 クエリフェデレーション レイクハウスにすべてのデータ資産を統合

    クエリフェデレーションはデータの場所の実際の場所を問わず、 安全 なアクセスのための単一のポイントを提供 データの取り込み無しで、すべてのデータに対する一元化されたアク セス、カタログ化、ガバナンス、クエリ実行が可能 • 権限制御を一元化 • インテリジェントなプッシュダウン最適化 • マテリアライズドビューによるクエリ性能の高速化 • 現時点では読み取り専用の操作をサポート PREVIEW CREATE FOREIGN CATALOG <catalog_name> USING CONNECTION <connection_name> OPTIONS (database ‘<remote_database>’) SELECT * FROM <catalog_name>.<schema_name>.<table_name>
  14. ©2023 Databricks Inc. — All rights reserved Unity Catalogの基本的なコンセプト 16

    • ストレージ資格情報 ◦ ストレージへの接続のためのクラウドプロバイダーの資格情報 • 外部ロケーション ◦ 外部テーブル、外部ボリューム、任意のファイルの保存場所として使 用される ◦ カタログやスキーマのデフォルトのマネージドロケーションも外部ロ ケーションとして管理される • マネージド / 外部テーブル ◦ マネージドロケーションまたは外部ロケーションに保存されるテーブ ルデータ • マネージド / 外部ボリューム ◦ マネージドロケーションまたは外部ロケーション内の任意のファイル 用のコンテナー • 接続(Connections) ◦ 外部データベースへの接続のための資格情報と接続情報 • 外部カタログ ◦ UCの外部データベースを表すカタログで、マネージドな データソースやファイルソースと 同時にクエリできる ファイルベースのデータソースの操作 データベースの操作
  15. ©2023 Databricks Inc. — All rights reserved ユーザー (S3、ADLS) 17

    クラウド ストレージ 監査ログ 監査ログ 書き込み 管理者 • IAMロール(AWS)/マネージド ID(Azure)/サービスアカウント(GCP) を作成 • Unity Catalogにストレージ資格情報 /外部ロケーションを作成 • Unity Catalogのアクセスポリシーを 定義 1 クエリーを送信 (SQL, Python, R, Scala) IAMロール/マネージドID/サービ スアカウントを引き受ける (Assume) 名前空間, メタデータ, 権限 (Grants) をチェック 2 3 パス/データファイルのリストとス コープを制限した一時トークンを 返す 4 一時トークンを使ってパス/データ ファイルのリストからデータを要求/ 取り込む 5 データを返却 6 結果を送信 8 クラスター/ SQLウェアハウス ポリシーを強 制 7 Unity Catalog Unityでファイルベースのデータソースをクエリする
  16. ©2023 Databricks Inc. — All rights reserved ユーザー (Snowflake, SQL

    Server, Postgres, Mysql, etc) 18 JDBC データベース 監査ログ 監査ログ 書き込み 管理者 • データベースへのJDBC接続情報を 持つ接続オブジェクトを定義 • 外部カタログを登録 • Unity Catalogでアクセスポリシーを 定義 1 クエリーを送信 (SQL, Python, R, Scala) 名前空間, メタデータ, 権限 (Grants) をチェック ポリシーを強制 2 暗号化された資格情報をクラス ター/SQLウェアハウスに返却 3 データベースに直接接続して、述語 プッシュダウンを使用してデータを 要求/取り込み 4 データを返却 6 結果を送信 7 クラスター/ SQLウェアハウス Unity Catalog Unityでデータベースソースをクエリする 5 データ内のメタデータの変更はUCコ ントロールプレーンにプッシュされる
  17. ©2023 Databricks Inc. — All rights reserved 19 ファイル &

    データベースソース横断の管理された名前空間 SELECT * FROM main.paul.red_wine; -- <catalog>.<database>.<table> SELECT * FROM hive_metastore.default.customers; default (データベース) customers (テーブル) クエリフェデレーションを利用したレガシーメタストアと外部データベースへのアクセス モデル/ 関 数 外部 スキーマ SELECT * FROM snowflake_warehouse.some_schema.some_table; 外部 テーブル hive_metastore (レガシー) Unity Catalog 外部 カタログ スキーマ 1 External Table マネージド/外部 ボリューム ビュー マネージド/外部 テーブル カタログ 1
  18. ©2023 Databricks Inc. — All rights reserved  クラウドストレージ (S3, ADLS,

    GCS) マネージド コンテナー / バケット メタストア Unity Catalog スキーマ1 マネージド コンテナー / バケット カタログ1 スキーマ3 カタログ2 マネージド コンテナー / バケット スキーマ2 1) メタストアへの保存 2) カタログへの保存 3) スキーマへの保存 ファイルベースのデータソース間の分離 データ分離やコスト配分のためにマネージドデータソースを使用する 20
  19. ©2023 Databricks Inc. — All rights reserved クラウドストレージ (S3, ADLS,

    GCS) 柔軟なガバナンスのための複数のACLツリー 外部ロケーション 外部テーブルとファイルベースのデータソースアクセスは別々に管理 ボリューム ボリューム テーブル ユーザー アクセス制御 Unity Catalog データ 読み取り/書き込み SELECTのみ 書き込み操作 パスを介してテーブルまたはテーブルデータに書き込みを 行う場合、外部ロケーションのWRITE権限は使用されない 21
  20. ©2023 Databricks Inc. — All rights reserved Cloud Storage (S3,

    ADLS, GCS) ボリューム ボリューム Managed / External Location テーブル - ボリュームはPOSIXコマンドを使ってアクセスできる - ボリュームはマネージド/外部ロケーション配下に作成されUCリネージで追跡さ れる - ボリュームによって非テーブルデータセットへのガバナンスを追加 - 非構造化データ (例: MLで利用する画像, 音声, 動画, PDFファイルなど) - 半構造化データ (例: MLモデルの学習やバリデーションに利用するテストデータセッ ト) - 生データのファイル (アドホックまたは初期段階のデータ探索に使用)、またはそこか ら保存した出力 - ワークスペース横断で使用するライブラリーや設定 - 運用データ (例: ログ、チェックポイント用出力ファイル) - テーブルはボリュームではなくマネージド/外部ロケーションに登録される Unity Catalog ボリューム Unity Catalogのガバナンスを通じてファイルを管理 Data データ dbutils.fs.ls(“s3://my_external_location/Volumes/catalog/schema/volume123”) ls /Volumes/catalog/schema/volume123 22 2024年2月GA
  21. ©2023 Databricks Inc. — All rights reserved Unityにおけるファイルベースのデータソースの定義 ユーザー クラスター/

    SQLウェアハウス クラウドストレージ (S3, ADLS, GCS) 外部ロケーション内のパス 外部ロケーション内のパス … 外部ロケーション & 資格情報 アクセス制御 ボリューム テーブル 23 Unity Catalog クラウドをまたがるデータアクセス管理をシンプル化 スキーマ/カタログ上の マネージドロケーション マネージド マ ネ ー ジ ド 外 部 外部
  22. ©2023 Databricks Inc. — All rights reserved Databricks ワークスペース2 すべてのメタデータを一箇所で管理

    25 Unity Catalog なしの場合 Unity Catalog ありの場合 ファイルとデータベースのソース全体にわたる単一のメタデータレイヤーが ガバナンスを強化 Databricks ワークスペース1 Databricks ワークスペース Databricks ワークスペース Unity Catalog ユーザー管理 メタストア クラスター SQLウェアハウス クラスター SQLウェアハウス ユーザー管理 メタストア クラスター SQLウェアハウス ユーザー管理 メタストア クラスター SQLウェアハウス アクセス制御 アクセス制御 アクセス制御 外部 データベース
  23. ©2023 Databricks Inc. — All rights reserved 26 集中管理型のアクセス制御 GRANT

    <privilege> ON <securable_type> <securable_name> TO `<principal>` GRANT SELECT ON iot.events TO engineers 権限レベルを 選択 IDプロバイダーから グループを同期 ‘Table’= S3/ADLS上の ファイルのコレクション ANSI SQL DCLを使用 UIを使用 ワークロードや外部データベースへのアクセス権限を一元的に管理
  24. ©2023 Databricks Inc. — All rights reserved 27 行レベルセキュリティと列レベルマスキング 再利用可能なフィル

    ターをテーブルに割り 当て フィルター述語 を指定 グループメンバー シップをテスト 特定の行のみ表示 ファイルベースのデータセットと外部テーブルにきめ細かなアクセス制御を適用 CREATE FUNCTION us_filter(region STRING) RETURN IF(IS_MEMBER(‘admin’), true, region=“US”); ALTER TABLE sales SET ROW FILTER us_filter ON region; CREATE FUNCTION <name> ( <parameter_name > <parameter_type> .. ) RETURN {filter clause whose output must be a boolean} 再利用可能なマスクを 列に割り当て マスクまたはマスク 関数を指定 グループメンバー シップをテスト 機密カラムのマスクまたは除外 CREATE FUNCTION ssn_mask(ssn STRING) RETURN IF(IS_MEMBER(‘admin’), ssn, “****”); ALTER TABLE users ALTER COLUMN table_ssn SET MASK ssn_mask; CREATE FUNCTION <name> (<parameter_name>, <parameter_type>, [, <column>...]) RETURN {expression with the same type as the first parameter} PREVIEW
  25. ©2023 Databricks Inc. — All rights reserved 指定した環境からのみデータにアクセス dev メタストア

    staging prod prod_ws staging_ws dev_ws アナリスト テスター 開発者 カタログ ワークスペース グループ bu_1_dev bu_1_staging bu_1_prod BUのユーザー bu_dev_stg_ws bu_prod_ws ワークスペースや グループ間で、 データへのアクセ スやデータの利 用を分離できる BUの開発者 BUのテスター 環境や目的によってカタログへのアクセスを制限する 28 BU: Business Unit = 事業部門
  26. ©2023 Databricks Inc. — All rights reserved 29 TerraformやAPIによる洗練されたガバナンス data-sec-ops、コードパターン化したポリシーを用いてガバナンスをスケール

    • UCオブジェクトの権限は、Terraformプロバイ ダーを使ってプログラム的に管理可能 • UCオブジェクト(メタストア、カタログ、割り当てな ど)自体の管理も自然に行うことになる (まだTerraformを使っていないのなら、今がいい機会かもしれません!) resource "databricks_grants" "sandbox" { provider = databricks.workspace catalog = databricks_catalog.sandbox.name grant { principal = "Data Scientists" privileges = ["USAGE", "CREATE"] } grant { principal = "Data Engineers" privileges = ["USAGE"] } }
  27. ©2023 Databricks Inc. — All rights reserved データリネージはなぜ重要か? • 規制要件に基づくデータ

    リネージの検証 • データセット間での機密データの 拡散の追跡 • 分析に使用する前にデータのコ ンテキストと信頼性を理解する • 作業やデータの重複を防ぐ • レポートの問題や不一致につい てデータを遡って追跡する • 提案された変更が下流のレポー トに与える影響を分析する(例: カラムの廃止) コンプライアンス 発見 可観測性 31
  28. ©2023 Databricks Inc. — All rights reserved 32 • DatabricksクラスターまたはSQLウェアハウ

    ス上のランタイムのデータリネージを自動的 に記録 • Unity Catalogの共通権限モデルを活用 • リネージはテーブル、カラム、ダッシュボー ド、ワークフロー、ノートブック、ファイル、外 部ソース、モデルを横断 • 推奨: Unity Catalogへのアップグレード! 組織内のデータの流れや利用状況をエンドツーエンドで可視化 すべてのワークロードで自動化されたリネージ
  29. ©2023 Databricks Inc. — All rights reserved 33 組み込みの検索とデータ検出 •

    Unity Catalogに保存されたデータ資産を 検索するための統一されたUI • Unity Catalogの共通権限モデルを活用 • UCのオブジェクトへのタグ付け:列、テーブ ル、スキーマ、カタログ • タグでオブジェクトを検索 • 推奨: データ資産の取り込み時に コメントとタグを付与 低レイテンシーのデータ検出で価値創造までの時間を短縮
  30. ©2023 Databricks Inc. — All rights reserved システムテーブル: オブジェクトのメタデータ カタログ内のオブジェクトの状態に関する質問に回答する

    salesカタログに存在するテーブル名の一覧は ? SELECT table_name FROM system.information_schema.tables WHERE table_catalog="sales" AND table_schema!="information_schema"; ゴールドテーブルを最後に更新したのは誰 ? SELECT table_name, last_altered_by, last_altered FROM system.information_schema.tables WHERE table_schema = "churn_gold" ORDER BY 1, 3 DESC; このテーブルにアクセスできるのは誰 ? SELECT grantee, table_name, privilege_type FROM system.information_schema.table_privileges WHERE table_name = "login_data_silver"; ` このゴールドテーブルの所有者は誰 ? SELECT table_owner FROM system.information_schema.tables WHERE table_catalog = "retail_prod" AND table_schema = "churn_gold" AND table_name = "churn_features"; 35
  31. ©2023 Databricks Inc. — All rights reserved システムテーブル: 監査ログ (Audit

    Logs) 誰が、いつ、何にアクセスしたかをほぼリアルタイムで確認可能 このテーブルに最もアクセスしているのは誰 ? SELECT user_identity.email, count(*) FROM system.operational_data.audit_logs WHERE request_params.table_full_name = "main.uc_deep_dive.login_data_silver" AND service_name = "unityCatalog" AND action_name = "generateTemporaryTableCredential" GROUP BY 1 ORDER BY 2 DESC LIMIT 1; このユーザーが過去24時間でアクセスしたのは何? SELECT request_params.table_full_name FROM system.operational_data.audit_logs WHERE user_identity.email = "[email protected]" AND service_name = "unityCatalog" AND action_name = "generateTemporaryTableCredential" AND datediff(now(), created_at) < 1; このテーブルを削除したのは誰? SELECT user_identity.email FROM system.operational_data.audit_logs WHERE request_params.full_name_arg = "main.uc_deep_dive.login_data_silver" AND service_name = "unityCatalog" AND action_name = "deleteTable"; このユーザーが最も頻繁にアクセスするテーブルは ? SELECT request_params.table_full_name, count(*) FROM system.operational_data.audit_logs WHERE user_identity.email = "[email protected]" AND service_name = "unityCatalog" AND action_name = "generateTemporaryTableCredential" GROUP BY 1 ORDER BY 2 DESC LIMIT 1; 36
  32. ©2023 Databricks Inc. — All rights reserved システムテーブル: 請求ログ (Billing

    Logs) データ資産全体のコスト配分を把握する DBU消費の日次のトレンドは? SELECT date(created_on) as `Date`, sum(dbus) as `DBUs Consumed` FROM system.operational_data.billing_logs GROUP BY date(created_on) ORDER BY date(created_on) ASC; 現時点までの今月の各SKUのDBU消費量は? SELECT sku as `SKU`, sum(dbus) as `DBUs` FROM system.operational_data.billing_logs WHERE month(created_on) = month(CURRENT_DATE) GROUP BY sku ORDER BY `DBUs` DESC; DBU消費のトップ10ユーザーは誰? SELECT tags.creator as `User`, sum(dbus) as `DBUs` FROM system.operational_data.billing_logs GROUP BY tags.creator ORDER BY `DBUs` DESC LIMIT 10; どのジョブが最もDBUを消費している? SELECT tags.JobId as `Job ID`, sum(dbus) as `DBUs` FROM system.operational_data.billing_logs GROUP BY `Job ID`; 37
  33. ©2023 Databricks Inc. — All rights reserved システムテーブル: リネージデータ 上流と下流のソースを一箇所でクエリする

    このテーブルのソーステーブルは ? SELECT DISTINCT target_table_full_name FROM system.access.table_lineage WHERE source_table_name = "login_data_bronze"; このテーブルから読み取られるユーザークエリは何 ? SELECT DISTINCT entity_type, entity_id, source_table_full_name FROM system.access.table_lineage WHERE source_table_name = "login_data_silver"; 38
  34. ©2023 Databricks Inc. — All rights reserved 40 Delta Sharing

    組織間の オープンな共有 Databricks Marketplace すべてのデータ, AI, アプリのためのオープンな マーケットプレイス Databricks Clean Room プライバシー保護さ れたコンピューティン グとコラボレーション データ共有とコラボレーション イノベーションを加速し、新たなビジネスを生み出す
  35. ©2023 Databricks Inc. — All rights reserved 41 Delta Sharing

    テーブル、ビュー、ファイル、モデルなどを安全に共有するための オープンスタンダード データコンシューマー 複製無しでデータを共有 オープンプロトコルの プラットフォーム横断での共有 データプロバイダー Delta Lake table / view / file / model / etc Delta Sharing サーバー Delta Sharing プロトコル … and more 任意の互換 クライアント
  36. ©2023 Databricks Inc. — All rights reserved Dashboards ML Models

    Data Files Data Tables Solution Accelerators Databricks Marketplace データ, 分析, AIのためのオープンなマーケットプレ イス データセット ノートブック ダッシュボード MLモデル ソリューションアクセラレーター データアプリケーション Powered by Delta Sharing Databricks Marketplace Notebooks 42
  37. ©2023 Databricks Inc. — All rights reserved UC設計 • カタログ

    • ワークスペース • アカウントグループ • デフォルトのロール 1 初回セットアップ • メタストア作成 • IDフェデレーション • ワークスペース参加 2 UCオブジェクト作成 • ストレージ資格情報 • 外部ロケーション • カタログ • 所有者の設定 3 レガシーメタストアの アップグレード • SYNC 外部テーブル/ス キーマ • マネージドテーブル, ファイルの移行 4 アクセス権付与 • カタログ • スキーマ • テーブル • ファイル 5 ワークロードの アップグレード • クラスター作成 • ジョブ作成 • ノートブック更新 • 下流ツール 6 後片付け • 古いパイプライン古 いクラスター • Hiveメタストア • マウント 7 Unity Catalogへのハイレベルなロードマップ フルアップグレードのために考慮すべきステップ 44 計画/セットアップ データ/ワークロードのアップグレード クリーンアップ
  38. ©2023 Databricks Inc. — All rights reserved HiveテーブルをUnityにアップグレード マネージド &

    外部テーブル - SYNCコマンドを使用 • 複数回実行し、時間をかけてHive/GlueデータベースからUCに変更を取り込む • 長期的な同期にはジョブを使用する • DRY RUN オプションを使用してターゲットテーブルに変更を加えずに同期をテストする • スキーマロケーションが定義されているHiveマネージドテーブルで作業する SYNC SCHEMA hive_metastore.my_db TO SCHEMA main.my_db_uc DRY RUN SYNC TABLE hive_metastore.my_db.my_tbl TO TABLE main.my_db_uc.my_tbl 46
  39. ©2023 Databricks Inc. — All rights reserved マネージドHiveテーブルをUnityに移行 オプション、またはDBFSルートに存在する場合 -

    CTAS/CLONE // A. Managed Delta -> Managed Delta CREATE TABLE <new_catalog>.<new_schema>.<new_table> CLONE hive_metastore.<old_schema>.<old_table>; // B. Managed non-Delta -> External non-Delta CREATE TABLE <new_catalog>.<new_schema>.<new_table> LOCATION <..> AS SELECT * FROM hive_metastore.<old_schema>.<old_table>; // A+B. Once fully upgraded and tested, drop hive table DROP TABLE hive_metastore.<old_schema>.<old_table>; 1 2 3 4 5 6 7 8 DBFS managed container / bucket UC managed container / bucket Hive_metas tore catalog <new_catalog > catalog Metadata clone data clone DBFS managed container / bucket External location container / bucket Hive_metas tore catalog <new_catalog > catalog Metadata copy data copy A B 47
  40. ©2023 Databricks Inc. — All rights reserved トポロジー: マルチリージョン /

    マルチクラウド Delta Sharingを活用 • メタストアの境界 = クラウド / リージョン (レイテンシーやコストが理由) • 単一クラウドリージョンのメタストアで すべてのソフトウェア開発ライフサイクルと ビジネスユニットをカバー • ワークスペースとカタログの バインディングを必要に応じて 活用する • クラウドプロバイダー間または リージョン間の連携には Databricks-to- DatabricksのDelta Sharingを利用 クラウドリージョン1 メタ ストア WS Prd WS Stg Dev cat WS Dev Prd cat Stg cat WS ワークスペース クラウドリージョン3 メタ ストア WS Prd WS Stg Dev cat WS Dev Prd cat Stg cat クラウドリージョン2 メタ ストア WS Prd WS Stg Dev cat WS Dev Prd cat Stg cat 49
  41. ©2023 Databricks Inc. — All rights reserved UCを用いたソフトウェア開発ライフサイクルのセット アップ 50

    Unity Catalog Databricks ワークスペース DEV Databricks ワークスペース PROD クラスター クラスター カタログ PROD カタログ DEV Delta Lake DEV データ PROD データ <PA> トークンで 読み書き <DA> DEVシステムアカウント (サービスプリンシパ ル, インスタンスプロファイル, サービスアカウ ント) <PA> PRODシステムアカウント (サービスプリンシパ ル, インスタンスプロファイル, サービスアカウン ト) <PA>に アクセスを許可 (PRODデータの テーブル向け) <UG>に アクセスを許可 (DEVデータの テーブル向け) <PA> にアクセスを許可 <DA> にアクセスを許可 <UG> ユーザーグループ (開発者, データエンジニ ア, データサイエンティスト) ユーザー Jobs <DA>トークンで読 み書き チェック チェック 備考: • DEVとPRODで異なるワークスペースを 持つ理由の一つは、それぞれが異なる VNetやVPCに配置されることがあるた めです。これはUnity Catalogとは直接 関係ありませんが、結果的にここに示さ れているようなセットアップになります。
  42. ©2023 Databricks Inc. — All rights reserved Unity Catalogとクラスター/エンドポイント 汎用クラスター(ユーザー分離モード)

    • SQLとPythonを用いた一般的なワークロード(ETL、データ探索など)には ユーザー分離モードを使用する • 複数ユーザーが同一クラスターで作業できる 汎用クラスター(シングルユーザーモード) • Scalaユーザーおよびデータサイエンティストはシングルユーザーモードを使用する • MLランタイム、MLflowをサポート • このクラスタ上でコードを実行できるのは所有者のみのため、ノートブックの共同作業では、 同僚は閲覧は可能だがセルの実行はできない • 制限事項 ◦ ビューへのアクセスには基礎となるテーブルへのアクセスが必要 ◦ 動的ビュー (例: 行/列レベルセキュリティ) は現状非サポート SQLウェアハウス • Databricks SQLまたはPower BIやTableauなどのBIツールのいずれかを利用するビジネス アナリストはSQLウェアハウスを使用する <SA> システムアカウント (Azure: サービスプリンシパル or マネージド, AWS: IAMロール, GCP: サービスアカウント) Delta Lake Databricks ワークスペース ユーザー分離 モードクラス ター SQL + Python SQL ウェアハウス SQL Unity Catalog シングルユー ザーモードクラ スター SQL, Python, Scala, R メタデータ, ACLチェック メタデータ, ACLチェック メタデータ, ACLチェック <SA> トークンで 読み書き <SA> トークンで 読み書き <SA> トークンで 読み書き 51 Note: Multi-user support for ML Runtimes and MLFlow is under development
  43. ©2023 Databricks Inc. — All rights reserved デモシナリオ ハイテク企業 -

    アプリユーザーのアクセスパターンの分析 Emily 統合ガバナンスとセキュリティ PIIの保護, GDPRと規制を遵守 行/列レベルセキュリティ John データエンジニア パイプラインを所有, リネージを希望 リーダーとライターをアップグレード Alice BIアナリスト プラットフォームを跨ぐデータ分析を希望 Snowflakeへのクエリフェデレーション Marc プラットフォーム管理者 コスト傾向と分配に関心 システムテーブルの活用 アップグレード リネージ フェデレーション 行/列レベル セキュリティ システムテーブル