次の方法で共有


Databricks Connect for Python を使用した非同期クエリと中断

手記

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

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

手記

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

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