Partilhar via


Uso avançado do Databricks Connect

Observação

Este artigo aborda o Databricks Connect for 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 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 uma autenticação de token de acesso pessoal Databricks para se conectar usando a cadeia 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 código aberto.

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 código aberto. Se o seu código depende desses recursos, as etapas a seguir podem falhar com erros.

  1. Inicie um servidor Spark Connect local. Consulte Como usar o Spark Connect

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

    export SPARK_REMOTE="sc://localhost"
    
  3. Inicialize a sessão 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

Databricks Connect comunica-se com os clusters do Databricks via gRPC através de HTTP/2.

Para ter um melhor controle sobre as solicitações provenientes de clientes, os usuários avançados podem optar por instalar um serviço de 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()

Certificates

Se o cluster depender de um certificado SSL/TLS personalizado para resolver um FQDN (nome de domínio totalmente qualificado) do espaço de trabalho do Azure Databricks, você deverá definir a variável GRPC_DEFAULT_SSL_ROOTS_FILE_PATH de ambiente em sua máquina 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 outras maneiras de definir variáveis de ambiente, consulte a documentação do seu sistema operacional.

Scala

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

Logs de registro e depuração

Python

O Databricks Connect for Python produz logs usando o log padrão do Python.

Os logs são emitidos para o fluxo de erro padrão (stderr) e, por padrão, são desativados. A definição de 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 for Scala usa registro em log SLF4J e não é fornecido com nenhum provedor SLF4J.

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

  • A opção mais simples é incluir o provedor slf4j-simple, que imprime mensagens de log no nível INFO e superior para o fluxo de erro padrão (stderr).
  • Uma alternativa mais configurável é usar o provedor slf4j-reload4j que pega a configuração de um log4j.properties arquivo no 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 são impressos se o registrador raiz (ou um logger específico) estiver configurado no DEBUG nível:

log4j.rootLogger=DEBUG,stderr