0
0

【Databricks】システムテーブルを調べてみた

Posted at

背景・目的

Databricksのシステムテーブルの情報に触れる機会があったので、整理しました。

まとめ

システムテーブルは、下記の特徴があります。

  • アカウントの運用データが入っています。
  • 2023年12月15日現在で、パブリックプレビューです。
  • Unity Catalogにより管理されます。
  • アカウント管理者がREST APIで有効にします。
  • パブリックプレビュー中には、リアルタイム監視はサポートされていない。

概要

システムテーブルによる使用状況の監視を基に整理します。

What are system tables?

システム テーブルは、Databricks でホストされるアカウントの運用データの分析ストアです。 システムテーブルは、アカウント全体の履歴可観測性に使用できます。

アカウントの運用データが入っている。

Which system tables are available?

下記のテーブルが、利用できます。詳細は、ドキュメントをご確認ください。

スキーマ テーブル名 概要
access Audit logs 監査ログ
Table lineage Unity Catalog上のテーブル、パスの読み書きイベントが記録される
Column lineage Unity Catalog上の列の読み下記のイベントが記録される
billing Billable usage 課金利用の記録
Pricing SKU価格の履歴
compute Clusters クラスタの時間の経過に伴うクラスター構成の履歴
Node types 現在使用可能なノードタイプ、基本的な情報
marketplace Marketplace listing access リクエストデータのConsumer情報など
storage Predictive optimization 予測最適化機能の操作履歴

Enable system tables

システムテーブルは Unity Catalogによって管理されるため、システムテーブルを有効にしてアクセスするには、アカウントに少なくとも1つの Unity Catalog対応ワークスペースが必要です。 システムテーブルには、アカウント内のすべてのワークスペースのデータが含まれますが、Unity カタログ対応のワークスペースからのみアクセスできます。

  • Unity Catalogにより管理される

システム テーブルは、アカウント管理者が有効にする必要があります。 Unity Catalog REST API を使用してシステム テーブルを有効にすることができます。

  • アカウント管理者がREST APIで有効にする

Limitations

現在、システム テーブルのパブリック プレビューには次の制限があります。
リアルタイム監視はサポートされていません。 データは終日更新されます。 最近のイベントのログが表示されない場合は、後でもう一度確認してください。

  • パブリックプレビュー中には、リアルタイム監視はサポートされていない。

実践

事前確認

  1. 有効化前の状態を確認します。

有効化

  1. REST APIを実行するためには、管理者アカウントのAccess Tokenを作成しておきます。

  2. 下記のコマンドで実行前の状態を確認してみます。

    • PAT Token:自身のAccess Token
    • workspace:対象のワークスペース
    • metastore-id:メタストアID(s3パスに書いてあります。)
    curl -v -X GET -H "Authorization: Bearer <PAT Token>" "https://<workspace>.cloud.databricks.com/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas" | jq
    
  3. 下記の結果が返されました。information_schemaのみが、ENABLE_COMPLETEDとなっていました。ドキュメントを読むと、ENABLE_COMPLETEDがカタログエクスプローラーに表示されるようです。また、AVAILABLEが、使用可能だが、有効にはなっていないようです。

    * Connection #0 to host XXXX left intact
    {
      "schemas": [
        {
          "schema": "storage",
          "state": "AVAILABLE"
        },
        {
          "schema": "access",
          "state": "AVAILABLE"
        },
        {
          "schema": "billing",
          "state": "AVAILABLE"
        },
        {
          "schema": "compute",
          "state": "AVAILABLE"
        },
        {
          "schema": "marketplace",
          "state": "AVAILABLE"
        },
        {
          "schema": "operational_data",
          "state": "UNAVAILABLE"
        },
        {
          "schema": "information_schema",
          "state": "ENABLE_COMPLETED"
        }
      ]
    }
    $ 
    
  4. 下記のコマンドで有効化します。まずは、accessスキーマを指定します。HTTPステータス200を返しました。

    curl -v -X PUT -H "Authorization: Bearer <PAT Token>" "https://<workspace.databricks.com/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/access"
    
  5. 再び確認してみます。accessスキーマが有効になりました。

    {
      "schemas": [
        {
          "schema": "storage",
          "state": "AVAILABLE"
        },
        {
          "schema": "access",
          "state": "ENABLE_COMPLETED"
        },
        {
          "schema": "billing",
          "state": "AVAILABLE"
        },
        {
          "schema": "compute",
          "state": "AVAILABLE"
        },
        {
          "schema": "marketplace",
          "state": "AVAILABLE"
        },
        {
          "schema": "operational_data",
          "state": "UNAVAILABLE"
        },
        {
          "schema": "information_schema",
          "state": "ENABLE_COMPLETED"
        }
      ]
    }
    
  6. カタログエクスプローラーも確認します。見えました。

  7. 残りも有効化します。operational_dataは、UNAVAILABLEですが、一応試してみます。

    for schema in storage billing compute marketplace operational_data;do curl -v -X PUT -H "Authorization: Bearer $TOKEN" "https://XXXXXX.cloud.databricks.com/api/2.0/unity-catalog/metastores/XXXXXXXX/systemschemas/$schema";done
    
  8. 下記の結果が返されました。やはりoperational_dataは有効化出来ませんでした。また、storageとcomputeでが有効にできずエラーになってしまいました。

    {"error_code":"SCHEMA_DOES_NOT_EXIST","message":"Schema 'system.storage' does not exist.","details":XXXXX ・・・・
    {"error_code":"TABLE_DOES_NOT_EXIST","message":"Table 'system.compute.node_timeline' does not exist.","details":XXXX ・・・
    {"error_code":"INTERNAL_ERROR","message":"System schema \"operational_data\" is not currently available for enablement","details":XXXXX ・・・
    
  9. 再び確認してみます。下記が返されました。storageとcomputeがENABLE_INITIALIZEDになっていました。

    {
      "schemas": [
        {
          "schema": "storage",
          "state": "ENABLE_INITIALIZED"
        },
        {
          "schema": "access",
          "state": "ENABLE_COMPLETED"
        },
        {
          "schema": "billing",
          "state": "ENABLE_COMPLETED"
        },
        {
          "schema": "compute",
          "state": "ENABLE_INITIALIZED"
        },
        {
          "schema": "marketplace",
          "state": "ENABLE_COMPLETED"
        },
        {
          "schema": "operational_data",
          "state": "UNAVAILABLE"
        },
        {
          "schema": "information_schema",
          "state": "ENABLE_COMPLETED"
        }
      ]
    }
    $
    
  10. 再び、カタログエクスプローラーを確認します。

  11. テーブルも見えました。

データの確認

  1. list_pricesのテーブル定義を確認します。

    DESC system.billing.list_prices
    
  2. SELECTします。価格が確認できました。

      SELECT price_start_time,price_end_time,sku_name,currency_code,usage_unit,pricing 
        FROM system.billing.list_prices  
    ORDER BY price_start_time DESC
    

    image.png

考察

今回は、Databricksのシステムテーブルを確認しました。
一部、compute,storageスキーマが確認できませんでしたが、マニュアルなど探してみましたが詳細にはわかりませんでした。今後、調査してみようと思います。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0