3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初見Databricks on GCPを使ってわかったこと 3 【GCSの連携の仕方】

Last updated at Posted at 2023-12-31

今回は第三弾として、databricksをGCP上で立ち上げた、workspaceの中のnotebookで、実際に学習データを参照したいということが発生するのは必要不可欠で実際にどのようにやるのかの説明をします。

実際に記事はあるのですが、初見でこれをやろうとすると、いろんなリンクに飛ばされるので、この記事を見れば1発でどのようにデータ連携できるのかを書きます。

これまでの記事はこちらから

今回達成したいアーキテクチャと結論

空白の図(21).jpeg

実際にCloudStorageと連携するには、databricks上で学習instanceを立ち上げる設定画面で、GCP上で作成したCloudStorageにアクセスできるRoleを持ったIAM Accountを指定すればよいそうです。

スクリーンショット 2024-01-01 3.00.46.png

途中でDatabricks CLIを使用するのでInstallしておく

macの方だと、brew commandもあってbrewでもinstallできます。

brew tap databricks/tap
brew install databricks

Step01: ServiceAccountとCloudStorageをGCP consoleから作成してServiceAccountの鍵をjsonでダウンロードする。

Service Accountには、roles/storage.adminのCloudStorage管理者のRoleを割り当てる必要がある。

これはdatabricks上からアクセスするため。

実際にService AccountをJsonでダウンロードする

スクリーンショット 2024-01-01 3.06.37.png

下記のkey-valueの形をしたjson fileが取得できて、ここの値を使用する部分はあとで使用する。

{
  "type": "service_account",
  "project_id": "ここの値を使用する",
  "private_key_id": "ここの値を使用する",
  "private_key": "ここの値を使用する",
  "client_email": "ここの値を使用する",
  "client_id": "",
  "auth_uri": "",
  "token_uri": "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url": "",
  "universe_domain": ""
}

Step02: Databricks-CLIでSecretとSerectScopeを作成

Databricks-cli上でsecretを作成するのだが、大きく、

  • secretをまとめる、scope
  • secretそのもの

を作成する必要がある。

これは、databricksのinstanceを立ち上げるときに、spark経由でアクセスするのだが、アクセスする設定fileにStep1で作成したSAのjsonファイルの中のここの値を使用する部分を指定するのだがその中にdatabricks-workspaceのsecretとして登録しておく必要がある。

下記が最終的に、設定する項目なのだが、{{ }}で囲まれている。private.key.idprivate.keyに関してはsecret化する。

spark.hadoop.google.cloud.auth.service.account.enable true
spark.hadoop.fs.gs.auth.service.account.email <client-email>
spark.hadoop.fs.gs.project.id <project-id>
spark.hadoop.fs.gs.auth.service.account.private.key {{secrets/scope/gsa_private_key}}
spark.hadoop.fs.gs.auth.service.account.private.key.id {{secrets/scope/gsa_private_key_id}}

このとき、以下のような意味を持つ。
{{secrets/<これから作成するscope名>/<これから作成するscopeの中に属するSecretKey>}}

databricks configureしてworkspaceにアクセスできるようにする。

databricks configure

下記と言われるので
✗ Databricks host: https://█

databricksのworkspaceを指定する。
https://xxxx.0.gcp.databricks.com/?o=xxxxxx

token: xxxx

tokenに関しては、personal access tokenをdatabricks workspaceの「ユーザー設定 > 開発者 > アクセストークン」を取得してCopy paste

スクリーンショット 2024-01-01 1.41.12.png

実際にconfigureした後は、~/.databrickscfgにconfig infoが保存される。実際に下記は保存されてるかのcheck

vi ~/.databrickscfg

色々認証方法があるみたい。
https://docs.databricks.com/en/dev-tools/auth/pat.html

scopeを作成する。

--initial-manage-principal usersを使わない方法もあるが、databricksのPremiumプランの場合だと必要ない。

databricks secrets create-scope test-connect-storage --initial-manage-principal users

実際に作成されたscope

matsudomasato@matsudomasatonoMac-Studio ~> databricks secrets list-scopes                                                                                                            (base) 
Scope                 Backend Type
test-connect-storage  DATABRICKS

scopeを指定してsecretを作成する。

databricks secrets put-secret <scope-name> <key-name> でsecret作成なので
scope: test-connect-storagegsa_private_key_idgsa_private_keyを作成する。

matsudomasato@matsudomasatonoMac-Studio ~> databricks secrets put-secret test-connect-storage gsa_private_key_id                                                                     (base) 
✔ Please enter your secret value: 
//実際にStep1でJsonでダウンロードした、gsa_private_key_idとgsa_private_keyのvalueをそれぞれ作成

実際にsecretが格納されてるかのcheck

matsudomasato@matsudomasatonoMac-Studio ~ [1]> databricks secrets list-secrets test-connect-storage                                                                                  (base) 
Key                 Last Updated Timestamp
gsa_private_key     1704042167423
gsa_private_key_id  1704042192332

これでsecretの設定はOK。下記が公式の内容

Step3: 学習用instanceを立ち上げる設定で上記の内容を設定する。

これらの情報を「高度なオプション」のSparkタブに書く

スクリーンショット 2024-01-01 3.36.44.png

spark構成についてはもう一度貼る。

spark.hadoop.google.cloud.auth.service.account.enable true
spark.hadoop.fs.gs.auth.service.account.email <client-email>
spark.hadoop.fs.gs.project.id <project-id>
spark.hadoop.fs.gs.auth.service.account.private.key {{secrets/scope/gsa_private_key}}
spark.hadoop.fs.gs.auth.service.account.private.key.id {{secrets/scope/gsa_private_key_id}}

DONE。

試しにnotebookで指定したinstanceが使えるかを試してみる。

新しく作成したCloudStorageのBucket: databricks-to-gcs-testにcsvを配置してdatabricks-workspaceに配置した、notebook上呼び出せるかをテスト。
今回作成した学習用instanceを指定するのを忘れずに。

スクリーンショット 2024-01-01 3.40.50.png

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?