Compartilhar via


Uso avançado do Databricks Connect

Observação

Este artigo aborda o Databricks Connect para Databricks Runtime 14.0 e superior.

Este artigo descreve tópicos que vão além da configuração básica do Databricks Connect.

Configurar a cadeia de conexão do Spark Connect

Além de se conectar ao cluster usando as opções descritas em Configurar uma conexão com um cluster, uma opção mais avançada é conectar-se usando a cadeia de conexão do Spark Connect. Você pode passar a cadeia de caracteres na remote função ou definir a variável de SPARK_REMOTE ambiente.

Observação

Você só pode usar um token de autenticação pessoal do Databricks para se conectar usando a string de conexão do Spark Connect.

Python

Para definir a cadeia de conexão usando a remote função:

from databricks.connect import DatabricksSession

workspace_instance_name = retrieve_workspace_instance_name()
token                   = retrieve_token()
cluster_id              = retrieve_cluster_id()

spark = DatabricksSession.builder.remote(
   f"sc://{workspace_instance_name}:443/;token={token};x-databricks-cluster-id={cluster_id}"
).getOrCreate()

Como alternativa, defina a variável de SPARK_REMOTE ambiente:

sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>

Em seguida, inicialize a DatabricksSession classe:

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

Defina a variável de SPARK_REMOTE ambiente:

sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>

Em seguida, inicialize a DatabricksSession classe:

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder.getOrCreate()

Usar o servidor Spark Connect com o Databricks Connect

Opcionalmente, você pode executar o Databricks Connect em um servidor Spark Connect de software livre.

Importante

Alguns recursos disponíveis no Databricks Runtime e no Databricks Connect são exclusivos do Databricks ou ainda não foram lançados no Apache Spark de software livre. Se o código depender desses recursos, as etapas a seguir poderão falhar com erros.

  1. Inicie um servidor local do Spark Connect. Veja como usar o Spark Connect

  2. Configurar o Databricks Connect. Defina a variável SPARK_REMOTE de ambiente para apontar para o servidor local do Spark Connect. Consulte Conectar-se ao Spark Connect usando clientes.

    export SPARK_REMOTE="sc://localhost"
    
  3. Inicializar a sessão do Databricks:

    Python

    from databricks.connect import DatabricksSession
    
    spark = DatabricksSession.builder.getOrCreate()
    

    Scala

    import com.databricks.connect.DatabricksSession
    
    val spark = DatabricksSession.builder.getOrCreate()
    

Cabeçalhos HTTP adicionais

O Databricks Connect se comunica com os Clusters do Databricks por meio de gRPC por HTTP/2.

Para ter melhor controle sobre as solicitações provenientes de clientes, os usuários avançados podem optar por instalar um serviço proxy entre o cliente e o cluster do Azure Databricks. Em alguns casos, os proxies podem exigir cabeçalhos personalizados nas solicitações HTTP.

Use o método header() para adicionar cabeçalhos personalizados a solicitações HTTP:

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder.header("x-custom-header", "value").getOrCreate()

Certificados

Se o cluster depender de um certificado SSL/TLS personalizado para resolver um FQDN (nome de domínio totalmente qualificado) do workspace do Azure Databricks, você deverá definir a variável GRPC_DEFAULT_SSL_ROOTS_FILE_PATH de ambiente em seu computador de desenvolvimento local. Essa variável de ambiente deve ser definida como o caminho completo para o certificado instalado no cluster.

Python

O exemplo a seguir define essa variável de ambiente:

import os

os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"

Para obter outras maneiras de definir variáveis de ambiente, consulte a documentação do sistema operacional.

Scala

Java e Scala não oferecem maneiras de configurar variáveis de ambiente programaticamente. Consulte a documentação do sistema operacional ou do IDE para obter informações sobre como configurá-los como parte do aplicativo.

Registro de logs e logs de depuração

Python

O Databricks Connect para Python produz logs usando o módulo de logging padrão do Python.

Os logs são emitidos para o fluxo de erros padrão (stderr) e, por padrão, são desativados. Definir uma variável SPARK_CONNECT_LOG_LEVEL=debug de ambiente modificará esse padrão e imprimirá todas as mensagens de log no DEBUG nível e superior.

Scala

O Databricks Connect para Scala usa o log SLF4J e não vem com nenhum provedor SLF4J.

Espera-se que os aplicativos que usam o Databricks Connect incluam um provedor SLF4J e, em alguns casos, estejam configurados para imprimir as mensagens de log.

  • A opção mais simples é incluir o provedor slf4j-simple que imprime mensagens de log no INFO nível e superior ao fluxo de erros padrão (stderr).
  • Uma alternativa mais configurável é usar o provedor slf4j-reload4j, que obtém a configuração através de um arquivo da classpath.

O exemplo a seguir mostra um arquivo simples log4j.properties .

log4j.rootLogger=INFO,stderr

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n

No exemplo anterior, os logs de depuração serão impressos se o logger raiz (ou um logger específico) estiver configurado no DEBUG nível:

log4j.rootLogger=DEBUG,stderr