Partilhar via


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.

  1. 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, como spark.range(1,10).show(). Se não houver erros, você se conectou com êxito.

  2. 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 o SparkSession 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.

  3. Para parar o shell do Spark, pressione Ctrl + d ou Ctrl + zou execute o comando quit() ou exit().

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.