Analyze billable usage log data | Databricks on AWS [2022/9/15時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
本書では、Databricksアカウントの利用データをどのように読み込み、分析するのかを説明します。
アカウントコンソールで利用課金データを直接参照することができます。
複数の方法で利用課金ログをダウンロードしたり、デリバリーをスケジュールすることができます。
いずれの場合においても、CSVファイルのスキーマは同じものとなります。
これらのログをパース、解析するためにDatabricksを使うことができます。
CSVファイルのスキーマ
カラム | 型 | 説明 | サンプル |
---|---|---|---|
workspaceId | string | ワークスペースID | 1234567890123456 |
timestamp | datetime | 当該の利用における最終の時刻 | 2019-02-22T09:59:59Z |
clusterId | string | クラスターID | 0405-020048-brawl507 |
clusterName | string | ユーザーが指定したクラスター名 | Shared Autoscaling |
clusterNodeType | string | クラスターのインスタンスタイプ | m4.16xlarge |
clusterOwnerUserId | string | クラスター作成者のID | 12345678901234 |
clusterCustomTags | string("がエスケープされたjson) | この時間でクラスターに関連づけられたカスタムタグ | "{""dept"":""mktg"",""op_phase"":""dev""}" |
sku | string | 課金のSKU。値の一覧については課金SKUテーブルをご覧ください。 | STANDARD_ALL_PURPOSE_COMPUTE |
dbus | double | この時間でユーザーによって使用されたDBUの数 | 1.2345 |
machineHours | double | このクラスターのすべてのコンテナで使用されたマシンアワーの総数 | 12.345 |
clusterOwnerUserName | string | クラスター作成者のユーザー名(メールアドレス) | user@yourcompany.com |
tags | ("がエスケープされたjson) | この時間でクラスターに関連づけられたデフォルト・カスタムクラスタータグ、デフォルト・カスタムインスタンスプールタグ。クラスタータグとプールタグをご覧ください。これは、clusterCustomTags のスーパーセットです。 |
"{""dept"":""mktg"",""op_phase"":""dev"", ""Vendor"":""Databricks"", ""ClusterId"":""0405-020048-brawl507"", ""Creator"":""user@yourcompany.com""}" |
課金のSKU
- AWS_ENHANCED_SECURITY_AND_COMPLIANCE
- ENTERPRISE_ALL_PURPOSE_COMPUTE
- ENTERPRISE_ALL_PURPOSE_COMPUTE_(DLT)
- ENTERPRISE_ALL_PURPOSE_COMPUTE_(PHOTON)
- ENTERPRISE_DLT_ADVANCED_COMPUTE
- ENTERPRISE_DLT_ADVANCED_COMPUTE_(PHOTON)
- ENTERPRISE_DLT_CORE_COMPUTE
- ENTERPRISE_DLT_CORE_COMPUTE_(PHOTON)
- ENTERPRISE_DLT_PRO_COMPUTE
- ENTERPRISE_DLT_PRO_COMPUTE_(PHOTON)
- ENTERPRISE_JOBS_COMPUTE
- ENTERPRISE_JOBS_COMPUTE_(PHOTON)
- ENTERPRISE_JOBS_LIGHT_COMPUTE
- ENTERPRISE_SERVERLESS_SQL_COMPUTE
- ENTERPRISE_SERVERLESS_SQL_COMPUTE_AP_SYDNEY
- ENTERPRISE_SERVERLESS_SQL_COMPUTE_EUROPE_FRANKFURT
- ENTERPRISE_SERVERLESS_SQL_COMPUTE_EUROPE_IRELAND
- ENTERPRISE_SERVERLESS_SQL_COMPUTE_US_EAST_N_VIRGINIA
- ENTERPRISE_SERVERLESS_SQL_COMPUTE_US_EAST_OHIO
- ENTERPRISE_SERVERLESS_SQL_COMPUTE_US_WEST_OREGON
- ENTERPRISE_SQL_COMPUTE
- PREMIUM_ALL_PURPOSE_COMPUTE
- PREMIUM_ALL_PURPOSE_COMPUTE_(DLT)
- PREMIUM_ALL_PURPOSE_COMPUTE_(PHOTON)
- PREMIUM_DLT_ADVANCED_COMPUTE
- PREMIUM_DLT_ADVANCED_COMPUTE_(PHOTON)
- PREMIUM_DLT_CORE_COMPUTE
- PREMIUM_DLT_CORE_COMPUTE_(PHOTON)
- PREMIUM_DLT_PRO_COMPUTE
- PREMIUM_DLT_PRO_COMPUTE_(PHOTON)
- PREMIUM_JOBS_COMPUTE
- PREMIUM_JOBS_COMPUTE_(PHOTON)
- PREMIUM_JOBS_LIGHT_COMPUTE
- PREMIUM_SERVERLESS_SQL_COMPUTE
- PREMIUM_SERVERLESS_SQL_COMPUTE_AP_SYDNEY
- PREMIUM_SERVERLESS_SQL_COMPUTE_EUROPE_FRANKFURT
- PREMIUM_SERVERLESS_SQL_COMPUTE_EUROPE_IRELAND
- PREMIUM_SERVERLESS_SQL_COMPUTE_US_EAST_OHIO
- PREMIUM_SERVERLESS_SQL_COMPUTE_US_EAST_N_VIRGINIA
- PREMIUM_SERVERLESS_SQL_COMPUTE_US_WEST_OREGON
- PREMIUM_SQL_COMPUTE
- STANDARD_ALL_PURPOSE_COMPUTE
- STANDARD_ALL_PURPOSE_COMPUTE_(DLT)
- STANDARD_ALL_PURPOSE_COMPUTE_(PHOTON)
- STANDARD_DLT_ADVANCED_COMPUTE
- STANDARD_DLT_ADVANCED_COMPUTE_(PHOTON)
- STANDARD_DLT_CORE_COMPUTE
- STANDARD_DLT_CORE_COMPUTE_(PHOTON)
- STANDARD_DLT_PRO_COMPUTE
- STANDARD_DLT_PRO_COMPUTE_(PHOTON)
- STANDARD_JOBS_COMPUTE
- STANDARD_JOBS_COMPUTE_(PHOTON)
- STANDARD_JOBS_LIGHT_COMPUTE
2020/3以前の利用課金ログでは、以下のSKUを使用しています。
- LIGHT_AUTOMATED_NON_OPSEC
- LIGHT_AUTOMATED_OPSEC
- STANDARD_AUTOMATED_NON_OPSEC
- STANDARD_AUTOMATED_OPSEC
- STANDARD_INTERACTIVE_NON_OPSEC
- STANDARD_INTERACTIVE_OPSEC
Databricksで利用ログを分析する
このセクションでは、分析のためにどのように利用課金CSVファイルのデータをDatabricksで利用できる様にするのかを説明します。利用量テーブルの作成の選択肢を説明し、利用分析ダッシュボードの実行に使用できるサンプルノートブックを提供しています。
CSVファイルは商用のスプレッドシートアプリケーションの標準ではありますが、Apache Sparkで読み込むためには修正が必要となります。Databricksで利用量テーブルを作成する際には、option("escape", "\"")
を使用する必要があります。
合計DBUはdbus
カラムの合計となります。
テーブル作成UIを用いてログをインポートする
分析するためにCSVファイルをDatabricksにインポートするには、Databricks SQLのデータアップロード、テーブル作成を使用することができます。
Sparkデータフレームの作成
また、CSVファイルへのパスから利用量テーブルを作成するために以下のコードを使用することができます。
df = (spark.
read.
option("header", "true").
option("inferSchema", "true").
option("escape", "\"").
csv("/FileStore/tables/usage_data.csv"))
df.createOrReplaceTempView("usage")
例えば、ログデリバリーを使用している際など、ファイルがS3バケットに格納されている場合には、コードは以下の様になります。ファイルパスやディレクトリを指定することができます。ディレクトリを指定すると、すべてのファイルがインポートされます。以下の例ではファイルを指定しています。
df = (spark.
read.
option("header", "true").
option("inferSchema", "true").
option("escape", "\"").
load("s3://<bucketname>/<pathprefix>/billable-usage/csv/workspaceId=<workspace-id>-usageMonth=<month>.csv"))
df.createOrReplaceTempView("usage")
以下の例では、利用課金ファイルを格納するディレクトリをインポートしています。
df = (spark.
read.
option("header", "true").
option("inferSchema", "true").
option("escape", "\"").
load("s3://<bucketname>/<pathprefix>/billable-usage/csv/"))
df.createOrReplaceTempView("usage")
Deltaテーブルの作成
上の例のデータフレーム(df
)からDeltaテーブルを作成するには以下のコードを使用します。
(df.write
.format("delta")
.mode("overwrite")
.saveAsTable("database_name.table_name")
)
警告!
新規CSVを追加、置換した際には、保存したDeltaテーブルは自動で更新されません。最新のデータが必要であれば、Deltaテーブルを使用する前にこれらのコマンドを再実行してください。
使用量分析ダッシュボードのノートブック
利用課金データのデリバリーを使用している場合、CSVファイルが格納されるS3バケットのへのパスを指定し、ウィジェットにレポートのパラメーターを入力することで、利用量分析ダッシュボードを実行することができます。
ノートブックをDatabricksワークスペースにインポートした際、最初のノートブックセルの上部にレポートパラメーターを入力するウィジェットが表示されます。ウィジェットはノートブックのブラウザオンリーのビューでは表示されません。以下のウィジェットのイメージを示します。
使用量分析ダッシュボードノートブック