Databricks Connect for Python による非同期クエリーと割り込み

この記事では、 Databricks Runtime 14.0 以降の Databricks Connect について説明します。

この記事では、Databricks Connect for Python を使用して非同期クエリーと中断を処理する方法について説明します。 Databricks Connect を使用すると、一般的な IDE、ノートブック サーバー、およびカスタム アプリケーションを Databricks クラスターに接続できます。 「Databricks Connect とは」を参照してください。この記事の Scala バージョンについては、「 Databricks Connect for Scala を使用した非同期クエリーと割り込み」を参照してください。

Databricks Connectの使用を開始する前に、Databricks Connect クライアントをセットアップする必要があります。

Databricks Runtime 14.0 以降の Databricks Connect では、実行時間の長いクエリーを実行するときに、ネットワークやその他の割り込みに対するクエリの実行の回復性が向上します。ラップトップの蓋が閉じられた場合など、クライアント プログラムが中断を受け取ったり、オペレーティング システムによってプロセスが停止 (最大 5 分) されたりすると、クライアントは実行中のクエリーに再接続します。 これにより、クエリーをより長い時間(以前は1時間のみ)実行することもできます。

Databricks Connect には、コスト削減など、必要に応じて実行中のクエリーを中断する機能も付属しています。

次の Python プログラムは、 interruptTag() API を使用して、実行時間の長いクエリーを中断します。

from databricks.connect import DatabricksSession
from time import sleep
import threading

session = DatabricksSession.builder.getOrCreate()

def thread_fn():
  sleep(5)
  session.interruptTag("interrupt-me")

# All subsequent DataFrame queries that use session will have this tag.
session.addTag("interrupt-me")

t = threading.Thread(target=thread_fn).start()

df = <a long running DataFrame query>
df.show()

t.join()