Uso avançado do Databricks Connect
Este artigo aborda Databricks Connect para Databricks Runtime 14.0 e acima.
Este artigo descreve tópicos que vão além da configuração básica do site Databricks Connect.
Configurar as cadeias de conexão do Spark Connect
Além de se conectar ao site cluster usando as opções descritas em Configurar uma conexão com um site cluster, uma opção mais avançada é conectar-se usando as cadeias de conexão Spark Connect. O senhor pode passar as cadeias de caracteres na função remote
ou definir a SPARK_REMOTE
variável de ambiente.
O senhor só pode usar uma autenticaçãoDatabricks pessoal access token para se conectar usando as cadeias de conexão Spark Connect.
- Python
- Scala
Para definir as cadeias de conexão usando a função remote
:
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 ambiente SPARK_REMOTE
:
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
Em seguida, inicialize a classe DatabricksSession
:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Defina a variável de ambiente SPARK_REMOTE
:
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
Em seguida, inicialize a classe DatabricksSession
:
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder.getOrCreate()
Cabeçalhos HTTP adicionais
Databricks Connect se comunica com os clusters Databricks via gRPC sobre HTTP/2.
Para ter melhor controle sobre as solicitações provenientes dos clientes, os usuários avançados podem optar por instalar um serviço de proxy entre o cliente e o cluster do 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 às solicitações HTTP:
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder.header("x-custom-header", "value").getOrCreate()
Certificados
Se o seu cluster depender de um certificado SSL/TLS personalizado para resolver um Databricks workspace nome de domínio totalmente qualificado (FQDN), o senhor deverá definir a variável de ambiente GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
no computador de desenvolvimento local. Essa variável de ambiente deve ser definida como o caminho completo para o certificado instalado no cluster.
- Python
- Scala
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 formas de definir a variável de ambiente, consulte a documentação do seu sistema operacional.
Java e Scala não oferecem maneiras de configurar a variável de ambiente de forma programática. Consulte a documentação do seu sistema operacional ou do IDE para obter informações sobre como configurá-los como parte do seu aplicativo.
Registro e depuração logs
- Python
- Scala
O Databricks Connect for Python produz logs usando o logging padrão do Python.
são emitidos para a transmissão de erro padrão (stderr ) e, em default, são desativados.
A definição de uma variável de ambiente SPARK_CONNECT_LOG_LEVEL=debug
modificará esse default e imprimirá todas as mensagens log no nível DEBUG
e superior.
O Databricks Connect for Scala usa o registro SLF4J e não é fornecido com nenhum provedor SLF4J.
Espera-se que os aplicativos que usam o site Databricks Connect incluam um provedor SLF4J e, em alguns casos, estejam configurados para imprimir as mensagens do site log.
- A opção mais simples é incluir o provedor slf4j-simple, que imprime mensagens log no nível
INFO
e superiores na transmissão de erro padrão (stderr ). - Uma alternativa mais configurável é usar o provedor slf4j-reload4j, que pega a configuração de um arquivo
log4j.properties
no classpath.
O exemplo a seguir mostra um arquivo log4j.properties
simples.
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 logger raiz (ou um logger específico) estiver configurado no nível DEBUG
:
log4j.rootLogger=DEBUG,stderr