dbt CoreからDatabricksにOAuthで接続してみた

dbt CoreからDatabricksにOAuthで接続してみた

Clock Icon2025.04.21

データ事業本部のueharaです。

今回は、dbt CoreからDatabricksにOAuthで接続してみたいと思います。

Databricks側の設定

まずはDatabricks側から設定します。

Databricksの『Settings』ページから『Identity and access』の『Service principals』にアクセスします。

0421_databricks_01

開いた画面で『Add service principal』を選択します。

0421_databricks_02

その後『Add new』を入力し、任意のサービスプリンシパル名を設定します。

作成したサービスプリンシパルの『Secrets』タブから『Generate secret』を選択します。

0421_databricks_03

『Lifetime (days)』に任意の値を設定して作成すると、以下のように SecretClient ID が生成されるのでどこかにメモしておきます。

0421_databricks_04

※Secretは再度表示することはできないのでご注意下さい。

これでDatabricks側の設定は完了です。

dbt Coreの設定

次にdbt Coreです。

dbt , dbt-databricks のインストールが済んでいない場合は pip を利用して以下でインストール可能です。

$ pip install dbt-core dbt-databricks

dbtの実行環境が用意できたら、プロジェクトディレクトリを作成します。( profiles.yml は後で手動で作成するためスキップします)

 $ dbt init my_dbt_demo --skip-profile-setup

作成できたら、プロジェクトディレクトリ(上記であれば my_dbt_demo)の直下に以下の profiles.yml を作成します。

profiles.yml
my_dbt_demo:
  outputs:
    dev:
      catalog: workspace
      host: <YOUR-DATABRICKS-HOST>
      http_path: <YOUR-HTTP-PATH>
      schema: default
      threads: 1
      type: databricks
      auth_type: oauth
      client_id: "{{ env_var('DATABRICKS_CLIENT_ID') }}"
      client_secret: "{{ env_var('DATABRICKS_CLIENT_SECRET') }}"
  target: dev

<YOUR-DATABRICKS-HOST> にはご自身のDatabricksのホスト名(例: dbc-xxxxxxxx-xxxx.cloud.databricks.com )を入力し、 <YOUR-HTTP-PATH> には SQL WarehouseやクラスターのHTTP path(例: /sql/1.0/warehouses/xxxxxxxxxxxxxxxx )を入力して下さい。

auth_typeoauth にして、 client_idclient_secret はそれぞれ環境変数から取得します。

環境変数の DATABRICKS_CLIENT_IDDATABRICKS_CLIENT_SECRET は、それぞれ先程Databricks上で払い出したClient IDとSecretを設定して下さい。

接続してみた

これでいよいよ準備ができたので、以下コマンドで接続を確認してみます。

$ dbt debug

コマンド実行後、以下のように表示されたら接続が成功しています。

0421_databricks_05

せっかくなのでdbtも実行してみます。

プロジェクトディレクトリの seeds 配下に、 dbtで始めるデータパイプライン構築〜入門から実践〜で公開されている raw_customers.csv を格納します。

raw_customers.csv(先頭5行抜粋)
id,first_name,last_name
1,Yasuko,Kataoka
2,Chizuru,Ozaki
3,Kouhei,Iwasawa
4,Kae,Utsunomiya

その後、以下の seed コマンドを実行して、Databricksにcsvファイルのデータを取り込みます。

$ dbt seed

実行が完了すると、以下のようにDatabricks上で raw_customers テーブルが作成できていることが確認できました。

0421_databricks_06

最後に

今回は、dbt CoreからDatabricksにOAuthで接続してみました。

参考になりましたら幸いです。

参考文献

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.