Compartilhar via


Uso avançado do Databricks Connect para Python

Observação

Esse artigo aborda o Databricks Connect para o 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 é se conectar usando a cadeia de conexão do Spark Connect. Você pode passar a cadeia de caracteres na função remote ou definir a variável de ambiente SPARK_REMOTE.

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.

Para definir a cadeia 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 maneira:

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Shell do Pyspark

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

pyspark

Quando iniciado sem parâmetros adicionais, ele seleciona as credenciais padrão do ambiente (por exemplo, as variáveis de ambiente DATABRICKS_ ou o perfil de configuração DEFAULT) para se conectar ao cluster do Azure Databricks.

Depois que o REPL for iniciado, o objeto spark estará disponível configurado para executar comandos do Apache Spark no cluster do Databricks.

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

O REPL pode ser configurado para se conectar a um remoto diferente configurando o parâmetro --remote com uma cadeia de conexão do Spark Connect.

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

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

Cabeçalhos HTTP adicionais

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

Alguns usuários avançados podem optar por instalar um serviço proxy entre o cliente e o cluster do Azure Databricks para ter melhor controle sobre as solicitações provenientes dos clientes deles.

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 solicitações HTTP.

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

Certificados

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

Por exemplo, você define essa variável de ambiente em código Python da seguinte maneira:

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.

Registro em log e logs de depuração

O Databricks Connect para Python produz logs usando o registro em log do Python.

Os logs são emitidos para o fluxo de erros padrão (stderr) e, por padrão, apenas em logs no nível de AVISO e superiores são emitidos.

Definir uma variável de ambiente SPARK_CONNECT_LOG_LEVEL=debug modificará esse padrão e imprimirá todas as mensagens de log no nível DEBUG e superior.