2
0

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からBigQueryへの接続設定

Posted at

DatabricksからBigqueryへの接続

Databricks(spark)ではさまざまなConnectorを用意しており、sparkで生成したDataFrameを簡単にBigQueryに書き込む OR BigQueryからtableの読み込みを行うことができます。

手順としては簡単で

  • BigQuery Strorage APIの有効化
  • Service Accountの作成
  • temporary gcs bucketの作成

ということで簡単に行うことができます。

が、Databricks側のClusterに設定するSpark Configが毎回つまづくので備忘録として
残しておきたいと思います。

Spark Configの設定

必要なSpark Configは下記の通りです。

credentials <base64-keys>

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 <private_key>
spark.hadoop.fs.gs.auth.service.account.private.key.id <private_key_id>

警告
本来は、secretに入れてSpark Configから読み出すのがpracticeですが、わかりやすさ優先のためsecretを使いません。

ポイントはcredentailsの箇所で、service accountで作成したkeyをDownloadした際に
service account名などが入った"project名-xxxxxxxxxxxxxx.json"があると思うのですが
このファイルに対して

base64 projectname-XXXXXX.json

で、base64コマンドでエンコードして出力された値をcredentialの箇所に貼り付けます。

もう一箇所はprivate keyの箇所で、↑でDownloadしたjsonの中のprivate keyを貼り付けるのですが、そのまま貼り付けると読み込みに失敗するので、ダブルコーテーションを外すとうまく読み込めます。

あとの項目はそのまま貼り付けでOKですが、私はダブルコートありなしで区別するのが面倒なので、ダブルコートは全て外しています。(前にダブルコートをつけた時にうまくいかなかった記憶がありますので、、、

まとめ

Databricksでpipelineを生成してデータマートとしてBigqueryに書き込む構成パターンは結構あるので、設定の参考になれば幸いです。

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?