Use the Databricks connector to connect to another Databricks workspace | Databricks on AWS [2023/4/4時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
本書では、別のDatabricksワークスペースに接続するためにDatabricksコネクターを使用する構文のサンプルを示します。このコネクターは、Databricksランタイム13.0以降に含まれるDatabricks JDBCドライバーを活用します。
重要!
ほとんどのデータ共有オペレーションでは、Delta Sharingをお勧めします。Delta Sharingによるデータ共有をご覧ください。
別のDatabricksワークスペースに接続する
Databricks Sparkコネクターを用いることで、別のDatabricksワークうsペースに設定されている計算リソースに接続し、現在のDatabricksワークスペースに結果を返却することができます。クエリーが成功するには、両方のワークスペースでアクティブな計算資源にアクセスできる必要があります。
JDBCドライバーはjdbc:databricks://
のURLに登録されています。リモートでワークスペースのリソースにアクセスできる権限を付与するパーソナルアクセストークンを設定、使用する必要があります。Databricksパーソナルアクセストークンを用いた認証をご覧ください。
注意
クラスターにアタッチされているDatabricks JDBCライブラリを使用している場合、Databricksランタイムに含まれているバージョンではなくクラスターにアタッチされているライブラリバージョンが使用されます。
別のDatabricksワークスペースからデータを読み込む
以下のサンプルのように、データを読み込む際にDatabricks Sparkコネクターを使用するためにフォーマットdatabricks
を指定することができます。
df = (spark.read
.format("databricks")
.option("host", "<host-name>.cloud.databricks.com")
.option("httpPath", "/sql/1.0/warehouses/<warehouse-id>")
.option("personalAccessToken", "<auth-token>")
.option("dbtable", "<table-name>")
.load()
)
別のDatabricksワークスペースに外部テーブルを作成する
Databricksワークスペースに、別のDatabricksワークスペースにリンクされる外部テーブルを登録することができます。
以下の例では、Databricksシークレットに格納されている資格情報を取得するためにsecret
関数を用いる構文をデモしています。
Databricksシークレットの詳細については、secret functionをご覧ください。
CREATE TABLE databricks_external_table
USING databricks
OPTIONS (
host '<host-name>.cloud.databricks.com',
httpPath '/sql/1.0/warehouses/<warehouse-id>',
personalAccessToken secret('<scope>', '<token>'),
dbtable '<table-name>'
);