
dbt CoreからDatabricksにOAuthで接続してみた
データ事業本部のueharaです。
今回は、dbt CoreからDatabricksにOAuthで接続してみたいと思います。
Databricks側の設定
まずはDatabricks側から設定します。
Databricksの『Settings』ページから『Identity and access』の『Service principals』にアクセスします。
開いた画面で『Add service principal』を選択します。
その後『Add new』を入力し、任意のサービスプリンシパル名を設定します。
作成したサービスプリンシパルの『Secrets』タブから『Generate secret』を選択します。
『Lifetime (days)』に任意の値を設定して作成すると、以下のように Secret と Client ID が生成されるのでどこかにメモしておきます。
※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
を作成します。
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_type
は oauth
にして、 client_id
と client_secret
はそれぞれ環境変数から取得します。
環境変数の DATABRICKS_CLIENT_ID
と DATABRICKS_CLIENT_SECRET
は、それぞれ先程Databricks上で払い出したClient IDとSecretを設定して下さい。
接続してみた
これでいよいよ準備ができたので、以下コマンドで接続を確認してみます。
$ dbt debug
コマンド実行後、以下のように表示されたら接続が成功しています。
せっかくなのでdbtも実行してみます。
プロジェクトディレクトリの seeds
配下に、 dbtで始めるデータパイプライン構築〜入門から実践〜で公開されている raw_customers.csv
を格納します。
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
テーブルが作成できていることが確認できました。
最後に
今回は、dbt CoreからDatabricksにOAuthで接続してみました。
参考になりましたら幸いです。