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.