Databricks ノートブックでの Databricks Connect のサポート
この記事では、Databricks Runtime13.3LTS以降のDatabricks Connectについて説明します。
Databricks Connect では、Databricksの外部Databricksローカル開発環境からコンピュートに接続できます。その後、コードを Databricks のノートブックまたはジョブに移動する前に、IDE から直接コードを開発、デバッグ、テストできます。「Databricks Connect とは」を参照してください。
ポータビリティ
ローカル開発からDatabricksへのシームレスなデプロイへの移行を実現するために、Databricksノートブックでは対応するDatabricksランタイムの一部としてすべてのDatabricks Connect APIを利用できます。これにより、コードを変更せずに Databricks ノートブックでコードを実行できます。
DatabricksSession の動作
DatabricksSession
の動作は、ローカル開発環境で Databricks Connect を使用する場合と、Databricks ワークスペースのノートブックとジョブで使用する場合とでは少し異なります。
ローカル開発環境の動作
Databricks の外部の IDE 内でコードをローカルに実行する場合、 DatabricksSession.builder.getOrCreate()
は、指定された構成の既存の Spark セッション (存在する場合) を取得するか、存在しない場合は新しい Spark セッションを作成します。DatabricksSession.builder.create()
は常に新しい Spark セッションを作成します。host
、 token
、 cluster_id
などの接続パラメーターは、ソース コード、環境変数、または .databrickscfg
構成プロファイル・ファイルから取り込まれます。
つまり、Databricks Connect を使用して実行すると、次のコードによって 2 つの個別のセッションが作成されます。
spark1 = DatabricksSession.builder.create()
spark2 = DatabricksSession.builder.create()
Databricks ワークスペースの動作
Databricksワークスペースのノートブックまたはジョブでコードを実行する場合、追加の構成なしで使用すると、DatabricksSession.builder.getOrCreate()
はデフォルト Spark セッション (spark
変数を介してもアクセス可能) を返します。spark
変数は、ノートブックまたはジョブがアタッチされているコンピュートインスタンスに接続するように事前に設定されています。新しい Spark セッションは、 DatabricksSession.builder.clusterId(...).getOrCreate()
や DatabricksSession.builder.serverless().getOrCreate()
などを使用して追加の接続パラメーターが設定されている場合に作成されます。
DatabricksSession.builder.create()
が必要とする明示的な接続パラメーター ( DatabricksSession.builder.clusterId(...).create()
など) をノートブックに入力しないと、 [UNSUPPORTED]
エラーが返されます。
kwargs を受け取るremote()
や、host()
やtoken()
のような個々の設定方法を用いることで、ノートブックやジョブに接続されていないDatabricksコンピュートに接続するためにDatabricks Connectを使用することができます。 このような場合、参照されるコンピュートに対して新しいセッションが作成されます。これは、 Databricks ノートブックまたはジョブの外部で使用される場合と同様に行われます。
サーバレス コンピュート上で動作するノートブックの場合、デフォルトではクエリは 9000 秒後にタイムアウトします。 これをカスタマイズするには、Spark 構成プロパティを spark.databricks.execution.timeout
に設定します。 「Databricks での Spark 構成プロパティの設定」を参照してください。