Uso avançado do Databricks Connect para Python

Observação

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

Este artigo descreve tópicos que vão além da configuração básica do 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 variável de ambiente SPARK_REMOTE.

Observação

O senhor só pode usar uma autenticaçãoDatabricks pessoal access token para se conectar usando as cadeias de conexão Spark Connect.

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

# Set the Spark Connect connection string in DatabricksSession.builder.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 da seguinte forma:

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

PySpark casca

O Databricks Connect para Python é fornecido com um binário pyspark que é um PySpark REPL (um shell Spark) configurado para usar o Databricks Connect. O REPL pode ser iniciado com a execução:

pyspark

Quando o senhor começa sem parâmetros adicionais, ele pega as credenciais default do ambiente (por exemplo, a variável de ambiente DATABRICKS_ ou o perfil de configuração DEFAULT) para se conectar aos clusters do Databricks.

Após a inicialização do REPL, o objeto spark está disponível e configurado para executar o comando Apache Spark nos clusters da Databricks.

>>> spark.range(3).show()
+---+
| id|
+---+
|  0|
|  1|
|  2|
+---+

O REPL pode ser configurado para se conectar a um controle remoto diferente, configurando o parâmetro --remote com uma string de conexão Spark connect.

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

Para interromper o shell, pressione Ctrl + d ou Ctrl + z, ou execute o comando quit() ou exit().

Cabeçalhos HTTP adicionais

O Databricks Connect se comunica com o Databricks clusters via gRPC sobre HTTP/2.

Alguns usuários avançados podem optar por instalar um serviço de proxy entre o cliente e os clusters do Databricks, para ter melhor controle sobre as solicitações provenientes de seus clientes.

Os proxies, em alguns casos, podem exigir cabeçalhos personalizados nas solicitações HTTP.

O método headers() pode ser usado para adicionar cabeçalhos personalizados às suas solicitações HTTP.

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.

Por exemplo, o senhor define essa variável de ambiente no código Python da seguinte forma:

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.

Registros de log e de depuração

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

Os registros são emitidos para a transmissão de erro padrão(stderr) e, pelo site default, são emitidos apenas logs no nível WARN ou superior.

A definição de uma variável de ambiente SPARK_CONNECT_LOG_LEVEL=debug modificará esse site default e imprimirá todas as mensagens de logs no nível DEBUG e superior.