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.
Quando iniciado sem parâmetros adicionais, o shell seleciona as credenciais padrão do ambiente (por exemplo, as DATABRICKS_
variáveis de ambiente ou o DEFAULT
perfil de configuração) para se conectar ao cluster do Azure Databricks. Para obter informações sobre como configurar uma conexão, consulte Configuração de computação para o Databricks Connect.
Para iniciar o shell do Spark e conectá-lo ao cluster em execução, execute um dos seguintes comandos em seu ambiente virtual Python ativado:
pyspark
O shell do Spark é exibido, por exemplo:
Python 3.10 ... [Clang ...] on darwin Type "help", "copyright", "credits" or "license" for more information. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 13.x.dev0 /_/ Using Python version 3.10 ... Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=... SparkSession available as 'spark'. >>>
Depois que o shell é iniciado, o
spark
objeto fica disponível para executar comandos do Apache Spark no cluster do Databricks. Execute um comando simples do PySpark, comospark.range(1,10).show()
. Se não houver erros, você se conectou com sucesso.Consulte Análise Interativa com o Shell do Spark para obter informações sobre como usar o shell Spark com Python para executar comandos em sua computação.
Use a variável interna
spark
para representar oSparkSession
no cluster em execução, por exemplo:>>> df = spark.read.table("samples.nyctaxi.trips") >>> df.show(5) +--------------------+---------------------+-------------+-----------+----------+-----------+ |tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip| +--------------------+---------------------+-------------+-----------+----------+-----------+ | 2016-02-14 16:52:13| 2016-02-14 17:16:04| 4.94| 19.0| 10282| 10171| | 2016-02-04 18:44:19| 2016-02-04 18:46:00| 0.28| 3.5| 10110| 10110| | 2016-02-17 17:13:57| 2016-02-17 17:17:55| 0.7| 5.0| 10103| 10023| | 2016-02-18 10:36:07| 2016-02-18 10:41:45| 0.8| 6.0| 10022| 10017| | 2016-02-22 14:14:41| 2016-02-22 14:31:52| 4.51| 17.0| 10110| 10282| +--------------------+---------------------+-------------+-----------+----------+-----------+ only showing top 5 rows
Todo o código Python é executado localmente, enquanto todo o código PySpark que envolve operações do DataFrame é executado no cluster no workspace remoto do Azure Databricks e as respostas de execução são enviadas de volta para o chamador local.
Para interromper o shell do Spark, pressione
Ctrl + d
ouCtrl + z
, ou execute o comandoquit()
ouexit()
.
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.