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

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

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

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

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

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

import com.databricks.connect.DatabricksSession

object InterruptTagExample {
  def main(args: Array[String]): Unit = {

    val session = DatabricksSession.builder.getOrCreate()

    val t = new Thread {
      override def run {
        Thread.sleep(5000)
        session.interruptTag("interrupt-me")
      }
    }

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

    t.start()

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

    t.join()
  }
}