Interrupções de consultas com o Databricks Connect
Este artigo aborda Databricks Connect para Databricks Runtime 14.0 e versões superiores.
Este artigo descreve como lidar com consultas assíncronas e interrupções com Databricks Connect. Databricks Connect permite conectar IDEs populares, servidores de notebooks e aplicativos personalizados a clusters Databricks . Veja O que é o Databricks Connect?
Interrupções na execução de consultas
Para Databricks Connect para Databricks Runtime 14.0 e versões superiores, a execução de consultas é mais resiliente a interrupções de rede e outras interrupções ao executar consultas de longa duração. Quando o programa cliente recebe uma interrupção ou o processo é pausado (até 5 minutos) pelo sistema operacional, como quando a tampa do laptop é fechada, o cliente se reconecta à consulta em execução. Isso também permite que as consultas sejam executadas por períodos mais longos (antes, apenas 1 hora).
O Databricks Connect agora também oferece a capacidade de interromper consultas em execução, se desejado, por exemplo, para reduzir custos.
- Python
- Scala
O seguinte programa em Python interrompe uma consulta de longa duração usando a API interruptTag() .
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()
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()
}
}
Sessões de longa duração
Sessões de longa duração são suportadas no Databricks Connect versão 16.4 e superiores. compute serverless .
Ao usar Databricks Connect com compute serverless , após o tempo limite default do Parado, Fazemos o possível para preservar sua sessão. Ao se reconectar, Databricks tenta Restaura automaticamente sua sessão, incluindo configurações, visualização temporária e UDFs. variáveis temporárias e upload de arquivos.
Isso é útil para sessões com comandos que precisam manter o estado para sobreviver a períodos de inatividade. tais como definir configurações, registrar UDFs, criar visualizações temporárias ou fazer upload. arquivos. Sem isso, um timeout do Parado exigiria que você reexecutasse todas essas configurações. comando antes de retomar o trabalho.
Limitações
- Sessões de longa duração são suportadas apenas em compute serverless . Eles não são suportados em compute padrão ou dedicada.
- A recuperação da sessão após o tempo limite do Parado é feita da melhor maneira possível e não é garantida. Se o seu A sessão não pôde ser restaurada; uma nova sessão será iniciada.
- Sessões que acumulam uma grande quantidade de estado podem exceder o limite de tamanho, após o qual O estado não é mais preservado. Reconectar após esse limite iniciará uma nova sessão.
- O estado de preservação expira após dois dias de inatividade. Se a sua sessão for parado mais longa do que isso, reconectar inicia uma nova sessão.
- O estado da consulta de transmissão e os scripts SQL que usam
EXECUTE IMMEDIATEnão são preservados. através de reconexões.