Pular para o conteúdo principal

tutorial: execução do código em serverless compute

nota

Este artigo se aplica a Databricks Connect 15.4 LTS e acima.

Este artigo descreve como criar um projeto no seu IDE, configurar o seu ambiente virtual, instalar o Databricks Connect para Python e executar o código em serverless compute no seu Databricks workspace.

Este tutorial utiliza Python 3.12 e Databricks Connect 16.4 LTS. Para utilizar outras versões do Python do Databricks Connect, elas devem ser compatíveis. Veja a matriz de suporte à versão.

Requisitos

Para concluir este tutorial, é necessário que os seguintes requisitos sejam atendidos:

Etapa 1: Configurar a autenticação do Databricks

Este tutorial utiliza Databricks OAuth autenticação usuário-para-máquina (U2M) e um perfil de configuração Databricks para autenticação no seu Databricks workspace.

  1. Utilize o comando Databricks CLI para iniciar o gerenciamento de tokens OAuth localmente, executando o seguinte comando para cada workspace alvo. No comando a seguir, substitua <workspace-url> pelo Databricks workspace URL da sua instância do, por https://dbc-a1b2345c-d6e7.cloud.databricks.com exemplo,.

    Bash
    databricks auth login --host <workspace-url>
  2. O Databricks CLI solicita que você salve as informações inseridas como um perfil de configuração Databricks. Pressione Enter para aceitar o nome de perfil sugerido ou insira o nome de um perfil novo ou existente. A Databricks recomenda utilizar “ DEFAULT ” como nome de perfil.

  3. No navegador da web, conclua as instruções na tela para fazer log in no workspace do Databricks.

Passo 2: Crie um novo ambiente virtual Python

  1. Crie a pasta do seu projeto e abra-a no seu IDE. Por exemplo, no menu principal do Visual Studio Code, clique em Arquivo > Abrir pasta > Abrir

  2. Abra uma janela de terminal na raiz da pasta do projeto. > Por exemplo, no menu principal do Visual Studio Code, clique em Exibir e selecione Terminal .

  3. Crie um ambiente virtual para o projeto chamado “ venv ” na raiz da pasta do projeto, executando o seguinte comando no terminal:

    Bash
    python3.12 -m venv .venv
  4. Ative seu ambiente virtual:

    Bash
    # Linux/Mac
    source .venv/bin/activate
    Bash
    # Windows
    .venv\Scripts\activate

Etapa 3: Instalar o Databricks Connect

Instale o Databricks Connect. Para obter informações sobre a versão mais recente do Databricks Connect 16.4, consulte Databricks Connect para Databricks Runtime 16.4.

pip install "databricks-connect==16.4.*"

Passo 4: Adicione o código e execute

  1. Adicione um novo arquivo Python, denominado “ main.py ”, ao seu projeto.

  2. Insira o código a seguir no arquivo, substituindo o espaço reservado <profile-name> pelo nome do seu perfil de configuração da Etapa 1 e salve o arquivo. O nome do perfil de configuração do default é DEFAULT.

    Python
    from databricks.connect import DatabricksSession

    spark = DatabricksSession.builder.serverless().profile("<profile-name>").getOrCreate()

    df = spark.read.table("samples.nyctaxi.trips")
    df.show(5)
  3. Execute o código utilizando o seguinte comando:

    Bash
    python3 main.py

    Cinco linhas da tabela são retornadas:

    Output
    +--------------------+---------------------+-------------+-----------+---------+-----------+
    |tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip|
    +--------------------+---------------------+-------------+-----------+----------+-----------+
    | 2016-02-16 22:40:45| 2016-02-16 22:59:25| 5.35| 18.5| 10003| 11238|
    | 2016-02-05 16:06:44| 2016-02-05 16:26:03| 6.5| 21.5| 10282| 10001|
    | 2016-02-08 07:39:25| 2016-02-08 07:44:14| 0.9| 5.5| 10119| 10003|
    | 2016-02-29 22:25:33| 2016-02-29 22:38:09| 3.5| 13.5| 10001| 11222|
    | 2016-02-03 17:21:02| 2016-02-03 17:23:24| 0.3| 3.5| 10028| 10028|
    +--------------------+---------------------+-------------+-----------+----------+-----------+

Você executou com sucesso sua primeira consulta em Databricks serverless compute utilizando Databricks Connect a partir do seu IDE.

Etapa 5: Prepare seu código para produção

Para cenários de produção, é importante evitar o uso de especificações compute no criador de sessões Spark. Por exemplo, se você implantou seu código em um clustering clássico: Standard ou Dedicated usando o . serverless() API em seu criador de sessões Spark, uma nova sessão serverless Spark é criada usando o clustering clássico como cliente.

Para tornar seu código flexível e pronto para produção, a sessão Spark não deve conter nenhum parâmetro.

Python
spark = DatabricksSession.builder.getOrCreate()

No entanto, quando este código é executado em Databricks, a sessão global default Spark do Databricks compute é utilizada.

Para habilitar o serverless compute no seu IDE, utilize o perfil de configuração padrão, que é selecionado pelo DatabricksSession.builder quando nenhum parâmetro é especificado:

  1. Crie um perfil de configuração chamado DEFAULT usando as instruções da etapa 1.

  2. Use um editor de texto para abrir o arquivo .databrickscfg, que se encontra em:

    • Sua pasta de usuário $HOME no Unix, Linux ou macOS: ~/.databrickscfg, ou

    • Seu %USERPROFILE% (sua pasta de usuário em Windows. Por exemplo, para macOS:

      Bash
      nano ~/.databrickscfg
  3. Adicione serverless_compute_id = auto ao perfil DEFAULT:

    [DEFAULT]
    host = https://my-workspace.cloud.databricks.com
    auth_type = databricks-cli
    serverless_compute_id = auto
  4. Salve as alterações e saia do editor.

  5. Modifique seu código para utilizar uma sessão Spark geral e execute-o:

    Python
    from databricks.connect import DatabricksSession

    spark = DatabricksSession.builder.getOrCreate()

    df = spark.read.table("samples.nyctaxi.trips")
    df.show(5)
    Bash
    python3 main.py

O código pronto para produção foi executado com sucesso em Databricks, serverless e compute utilizando Databricks Connect a partir do IDE com o perfil de configuração padrão.

dica

Também é possível utilizar variáveis de ambiente para definir a conexão com um servidor específico, como Databricks compute:

  • sem servidor: DATABRICKS_SERVERLESS_COMPUTE_ID=auto
  • Clássico: DATABRICKS_CLUSTER_ID=<your_cluster_id>