Pular para o conteúdo principal

Uso avançado do Databricks Connect para Python

nota

Este artigo aborda Databricks Connect para Databricks Runtime 14.0 e acima.

Este artigo descreve tópicos que vão além da configuração básica do site Databricks Connect.

Configurar as cadeias de conexão do Spark Connect

Além de se conectar ao seu cluster usando as opções descritas em Configurar uma conexão a um cluster, uma opção mais avançada é conectar-se usando as cadeias de conexão Spark Connect. O senhor pode passar as cadeias de caracteres na função remote ou definir a SPARK_REMOTE variável de ambiente.

nota

O senhor só pode usar uma autenticação de tokens de acesso pessoalDatabricks para se conectar usando as cadeias de conexão Spark Connect.

Para definir as cadeias de conexão usando a função remote:

Python
# 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 forma:

Python
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

PySpark shell

O Databricks Connect para Python vem com um binário pyspark que é um PySpark REPL (um shell Spark) configurado para usar o Databricks Connect.

Ao começar sem parâmetros adicionais, o shell obtém as credenciais default do ambiente (por exemplo, a DATABRICKS_ variável de ambiente ou o DEFAULT perfil de configuração) para se conectar ao cluster Databricks. Para obter informações sobre como configurar uma conexão, consulte a configuração de computação para Databricks Connect.

  1. Para começar o Spark shell e conectá-lo aos clusters em execução, execute um dos seguintes comandos a partir do seu ambiente virtual Python ativado:

    Bash
    pyspark

    O shell do Spark é exibido, por exemplo:

    Output
    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'.
    >>>

    Após a inicialização do shell, o objeto spark estará disponível para execução do Apache Spark comando no Databricks clustering. executar um simples PySpark comando, como spark.range(1,10).show(). Se não houver erros, você se conectou com sucesso.

  2. Consulte Análise interativa com o Spark shell para obter informações sobre como usar o shell Spark shell com para Python executar comando em compute seu.

    Use a variável integrada spark para representar o SparkSession em seus clusters 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 DataFrame operações é executado no clustering no Databricks workspace remoto e as respostas de execução são enviadas de volta ao chamador local.

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

Cabeçalhos HTTP adicionais

Databricks Connect se comunica com o clustering 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 clustering Databricks, para ter 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 método headers() pode ser usado para adicionar cabeçalhos personalizados às solicitações HTTP.

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

Certificados

Se o seu clustering depender de um certificado SSL/TLS personalizado para resolver um nome de domínio totalmente qualificado (FQDN) Databricks workspace , o senhor deverá definir a variável de ambiente GRPC_DEFAULT_SSL_ROOTS_FILE_PATH em seu computador de desenvolvimento local. Essa variável de ambiente deve ser definida como o caminho completo para o certificado instalado no clustering.

Por exemplo, o senhor define essa variável de ambiente no código Python da seguinte forma:

Python
import os

os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"

Para outras formas de definir a variável de ambiente, consulte a documentação do seu sistema operacional.

Registro e depuração logs

O Databricks Connect for Python produz logs usando o logging padrão do Python.

Os logs são emitidos para a transmissão de erro padrão (stderr ) e, pelo site default, são emitidos apenas logs no nível WARN ou superior.

A definição de uma variável de ambiente SPARK_CONNECT_LOG_LEVEL=debug modificará esse site default e imprimirá todas as mensagens log no nível DEBUG e superior.