Uso avançado do Databricks Connect for Python
Nota
Este artigo aborda o Databricks Connect for 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 é conectar-se usando a cadeia de conexão Spark Connect. Você pode passar a cadeia de caracteres na remote
função ou definir a variável de SPARK_REMOTE
ambiente.
Nota
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 remote
função:
# 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 SPARK_REMOTE
ambiente:
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
Em seguida, inicialize a DatabricksSession
classe da seguinte maneira:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Concha Pyspark
O Databricks Connect for Python vem com um pyspark
binário que é um PySpark REPL (um shell do Spark) configurado para usar o Databricks Connect.
Quando iniciado sem parâmetros adicionais, o shell pega 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 Databricks Connect.
Para iniciar o shell do Spark e conectá-lo ao cluster em execução, execute um dos seguintes comandos do ambiente virtual Python ativado:
pyspark
O shell Spark aparece, 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 Databricks. Execute um comando PySpark simples, comospark.range(1,10).show()
. Se não houver erros, você se conectou com êxito.Consulte Análise interativa com o Spark Shell para obter informações sobre como usar o shell do Spark com Python para executar comandos em sua computação.
Use a variável interna
spark
para representar oSparkSession
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 envolvendo operações DataFrame é executado no cluster no espaço de trabalho remoto do Azure Databricks e as respostas de execução são enviadas de volta ao chamador local.
Para parar 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 Databricks via gRPC sobre HTTP/2.
Alguns usuários avançados podem optar por instalar um serviço de proxy entre o cliente e o cluster do Azure Databricks, para ter um 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 headers()
método 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 cluster depender de um certificado SSL/TLS personalizado para resolver um FQDN (nome de domínio totalmente qualificado) do espaço de trabalho do Azure Databricks, você deverá definir a variável GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
de ambiente em sua máquina de desenvolvimento local. Essa variável de ambiente deve ser definida como o caminho completo para o certificado instalado no cluster.
Por exemplo, você define essa variável de ambiente no 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.
Logs de registro e depuração
O Databricks Connect for Python produz logs usando o log padrão do Python.
Os logs são emitidos para o fluxo de erro padrão (stderr) e, por padrão, são emitidos apenas logs no nível WARN e superior.
A definição de uma variável SPARK_CONNECT_LOG_LEVEL=debug
de ambiente modificará esse padrão e imprimirá todas as mensagens de log no DEBUG
nível e superior.