Partilhar via


Criar um pacote manualmente

Neste tutorial, você cria um Databricks Asset Bundle do zero. Esse pacote simples consiste em dois blocos de anotações e na definição de um trabalho do Azure Databricks para executar esses blocos de anotações. Em seguida, você valida, implanta e executa o trabalho em seu espaço de trabalho do Azure Databricks. Estas etapas automatizam o início rápido intitulado Criar seu primeiro fluxo de trabalho com um trabalho do Azure Databricks.

Requisitos

Etapa 1: Criar o pacote

Um pacote contém os artefatos que você deseja implantar e as configurações para os recursos que deseja executar.

  1. Crie ou identifique um diretório vazio em sua máquina de desenvolvimento.
  2. Mude para o diretório vazio no terminal ou abra-o no IDE.

Gorjeta

Você também pode usar um diretório contendo um repositório clonado de um provedor Git. Isso permite que você gerencie seu pacote com controle de versão externo e colabore mais facilmente com outros desenvolvedores e profissionais de TI em seu projeto.

Se você optar por clonar um repositório para esta demonstração, o Databricks recomenda que o repositório esteja vazio ou tenha apenas arquivos básicos, como README e .gitignore. Caso contrário, quaisquer arquivos pré-existentes no repositório podem ser desnecessariamente sincronizados com seu espaço de trabalho do Azure Databricks.

Etapa 2: Adicionar blocos de anotações ao projeto

Nesta etapa, você adiciona dois blocos de anotações ao seu projeto. O primeiro caderno recebe uma lista dos nomes de bebês mais populares desde 2007 das fontes de dados públicas do Departamento de Saúde do Estado de Nova York. Veja Nomes de bebês: tendência por nome: Início de 2007 no site do departamento. Em seguida, o primeiro bloco de anotações salva esses dados no volume do Catálogo Unity do Azure Databricks nomeado my-volume em um esquema nomeado default em um catálogo chamado main. O segundo bloco de notas consulta os dados guardados e apresenta contagens agregadas dos nomes dos bebés por nome próprio e sexo para 2014.

  1. A partir da raiz do diretório, crie o primeiro bloco de anotações, um arquivo chamado retrieve-baby-names.py.

  2. Adicione o seguinte código ao ficheiro retrieve-baby-names.py:

    # Databricks notebook source
    import requests
    
    response = requests.get('http://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)
    
  3. Crie o segundo bloco de anotações, um arquivo chamado filter-baby-names.py, no mesmo diretório.

  4. Adicione o seguinte código ao ficheiro filter-baby-names.py:

    # Databricks notebook source
    babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
    

Etapa 3: Adicionar um arquivo de esquema de configuração de pacote ao projeto

Se você estiver usando um IDE como Visual Studio Code, PyCharm Professional ou IntelliJ IDEA Ultimate que suporta arquivos YAML e arquivos de esquema JSON, você pode usar seu IDE não apenas para criar o arquivo de esquema de configuração do pacote, mas para verificar a sintaxe e a formatação do arquivo de configuração do pacote do seu projeto. Embora o arquivo de configuração do pacote criado posteriormente na Etapa 5 seja baseado em YAML, o arquivo de esquema de configuração do pacote nesta etapa é baseado em JSON.

Visual Studio Code

  1. Adicione suporte ao servidor de idiomas YAML ao Visual Studio Code, por exemplo, instalando a extensão YAML do Visual Studio Code Marketplace.

  2. Gere o arquivo de esquema JSON de configuração do Databricks Asset Bundle usando a CLI do Databricks para executar o bundle schema comando e redirecionar a saída para um arquivo JSON. Por exemplo, gere um arquivo nomeado bundle_config_schema.json no diretório atual, da seguinte maneira:

    databricks bundle schema > bundle_config_schema.json
    
  3. Na Etapa 5, você adicionará o seguinte comentário ao início do arquivo de configuração do pacote, que associa o arquivo de configuração do pacote ao arquivo de esquema JSON especificado:

    # yaml-language-server: $schema=bundle_config_schema.json
    

    Nota

    No comentário anterior, se o arquivo de esquema JSON de configuração do Databricks Asset Bundle estiver em um caminho diferente, substitua bundle_config_schema.json pelo caminho completo para o arquivo de esquema.

PyCharm Profissional

  1. Gere o arquivo de esquema JSON de configuração do Databricks Asset Bundle usando a CLI do Databricks para executar o bundle schema comando e redirecionar a saída para um arquivo JSON. Por exemplo, gere um arquivo nomeado bundle_config_schema.json no diretório atual, da seguinte maneira:

    databricks bundle schema > bundle_config_schema.json
    
  2. Configure o PyCharm para reconhecer o arquivo de esquema JSON de configuração do pacote e, em seguida, conclua o mapeamento do esquema JSON, seguindo as instruções em Configurar um esquema JSON personalizado.

  3. Na Etapa 5, você usará o PyCharm para criar ou abrir um arquivo de configuração de pacote. Por convenção, esse arquivo é chamado databricks.ymlde .

IntelliJ IDEA Ultimate

  1. Gere o arquivo de esquema JSON de configuração do Databricks Asset Bundle usando a CLI do Databricks para executar o bundle schema comando e redirecionar a saída para um arquivo JSON. Por exemplo, gere um arquivo nomeado bundle_config_schema.json no diretório atual, da seguinte maneira:

    databricks bundle schema > bundle_config_schema.json
    
  2. Configure o IntelliJ IDEA para reconhecer o arquivo de esquema JSON de configuração do pacote e, em seguida, conclua o mapeamento do esquema JSON, seguindo as instruções em Configurar um esquema JSON personalizado.

  3. Na Etapa 5, você usará o IntelliJ IDEA para criar ou abrir um arquivo de configuração de pacote. Por convenção, esse arquivo é chamado databricks.ymlde .

Etapa 4: Configurar a autenticação

Nesta etapa, você configura a autenticação entre a CLI do Databricks em sua máquina de desenvolvimento e seu espaço de trabalho do Azure Databricks. Este artigo pressupõe que você deseja usar a autenticação de usuário para máquina (U2M) OAuth e um perfil de configuração do Azure Databricks correspondente nomeado DEFAULT para autenticação.

Nota

A autenticação U2M é apropriada para experimentar essas etapas em tempo real. Para fluxos de trabalho totalmente automatizados, o Databricks recomenda que você use a autenticação OAuth máquina-a-máquina (M2M). Consulte as instruções de configuração da autenticação M2M em Autenticação.

  1. Use a CLI do Databricks para iniciar o gerenciamento de token OAuth localmente executando o seguinte comando para cada espaço de trabalho de destino.

    No comando a seguir, substitua <workspace-url> pela URL do Azure Databricks por espaço de trabalho, por exemplohttps://adb-1234567890123456.7.azuredatabricks.net.

    databricks auth login --host <workspace-url>
    
  2. A CLI do Databricks solicita que você salve as informações inseridas como um perfil de configuração do Azure Databricks. Pressione Enter para aceitar o nome de perfil sugerido ou digite o nome de um perfil novo ou existente. Qualquer perfil existente com o mesmo nome é substituído pelas informações que você inseriu. Você pode usar perfis para alternar rapidamente seu contexto de autenticação em vários espaços de trabalho.

    Para obter uma lista de quaisquer perfis existentes, em um terminal ou prompt de comando separado, use a CLI do Databricks para executar o comando databricks auth profiles. Para visualizar as configurações existentes de um perfil específico, execute o comando databricks auth env --profile <profile-name>.

  3. No navegador da Web, conclua as instruções na tela para fazer logon no espaço de trabalho do Azure Databricks.

  4. Para exibir o valor atual do token OAuth de um perfil e o carimbo de data/hora de expiração do token, execute um dos seguintes comandos:

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    Se você tiver vários perfis com o mesmo --host valor, talvez seja necessário especificar as --host opções e -p juntas para ajudar a CLI do Databricks a encontrar as informações corretas do token OAuth.

Etapa 5: Adicionar um arquivo de configuração de pacote ao projeto

Nesta etapa, você define como implantar e executar os dois blocos de anotações. Para esta demonstração, você deseja usar um trabalho do Azure Databricks para executar o primeiro bloco de anotações e, em seguida, o segundo bloco de anotações. Uma vez que o primeiro bloco de notas guarda os dados e o segundo consulta os dados guardados, pretende que o primeiro bloco de notas termine a execução antes de o segundo bloco de notas ser iniciado. Você modela esses objetivos em um arquivo de configuração de pacote em seu projeto.

  1. A partir da raiz do diretório, crie o arquivo de configuração do pacote, um arquivo chamado databricks.yml.
  2. Adicione o seguinte código ao databricks.yml arquivo, substituindo <workspace-url> pelo URL por espaço de trabalho, por exemplo https://adb-1234567890123456.7.azuredatabricks.net. Este URL tem de corresponder ao do seu .databrickscfg ficheiro:

Gorjeta

A primeira linha, começando com # yaml-language-server, só é necessária se o IDE a suportar. Consulte a Etapa 3 anterior para obter detalhes.

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: baby-names

resources:
  jobs:
    retrieve-filter-baby-names-job:
      name: retrieve-filter-baby-names-job
      job_clusters:
        - job_cluster_key: common-cluster
          new_cluster:
            spark_version: 12.2.x-scala2.12
            node_type_id: Standard_DS3_v2
            num_workers: 1
      tasks:
        - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./filter-baby-names.py

targets:
  development:
    workspace:
      host: <workspace-url>

Para personalizar trabalhos, os mapeamentos em uma declaração de trabalho correspondem à carga útil da solicitação, expressa no formato YAML, da operação create job, conforme documentado em POST /api/2.1/jobs/create na referência da API REST.

Gorjeta

Você pode definir, combinar e substituir as configurações de novos clusters de trabalho em pacotes usando as técnicas descritas em Substituir configurações de cluster em Databricks Asset Bundles.

Etapa 6: Validar o arquivo de configuração do pacote do projeto

Nesta etapa, você verifica se a configuração do pacote é válida.

  1. Use a CLI do Databricks para executar o bundle validate comando, da seguinte maneira:

    databricks bundle validate
    
  2. Se um resumo da configuração do pacote for retornado, a validação será bem-sucedida. Se algum erro for retornado, corrija-os e repita esta etapa.

Se você fizer alguma alteração no pacote após esta etapa, repita esta etapa para verificar se a configuração do pacote ainda é válida.

Etapa 7: Implantar o projeto local no espaço de trabalho remoto

Nesta etapa, você implanta os dois blocos de anotações locais em seu espaço de trabalho remoto do Azure Databricks e cria o trabalho do Azure Databricks em seu espaço de trabalho.

  1. Use a CLI do Databricks para executar o bundle deploy comando da seguinte maneira:

    databricks bundle deploy -t development
    
  2. Verifique se os dois blocos de anotações locais foram implantados: na barra lateral do seu espaço de trabalho do Azure Databricks, clique em Espaço de trabalho.

  3. Clique na pasta Users >><your-username>.bundle > baby-names > development > files. Os dois blocos de notas devem estar nesta pasta.

  4. Verifique se o trabalho foi criado: na barra lateral do seu espaço de trabalho do Azure Databricks, clique em Fluxos de trabalho.

  5. Na guia Trabalhos, clique em retrieve-filter-baby-names-job.

  6. Clique na guia Tarefas . Deve haver duas tarefas: retrieve-baby-names-task e filter-baby-names-task.

Se você fizer alguma alteração no pacote após esta etapa, repita as etapas 6 a 7 para verificar se a configuração do pacote ainda é válida e, em seguida, reimplantar o projeto.

Etapa 8: Executar o projeto implantado

Nesta etapa, você executa o trabalho do Azure Databricks em seu espaço de trabalho.

  1. Use a CLI do Databricks para executar o bundle run comando, da seguinte maneira:

    databricks bundle run -t development retrieve-filter-baby-names-job
    
  2. Copie o valor que aparece em seu terminal e cole esse valor em seu navegador da Web para abrir seu espaço de Run URL trabalho do Azure Databricks.

  3. No seu espaço de trabalho do Azure Databricks, depois que as duas tarefas forem concluídas com êxito e mostrarem barras de título verdes, clique na tarefa filter-baby-names-task para ver os resultados da consulta.

Se você fizer alterações no pacote após esta etapa, repita as etapas 6 a 8 para verificar se a configuração do pacote ainda é válida, reimplantar o projeto e executar o projeto reimplantado.

Passo 9: Limpar

Nesta etapa, você exclui os dois blocos de anotações implantados e o trabalho do seu espaço de trabalho.

  1. Use a CLI do Databricks para executar o bundle destroy comando, da seguinte maneira:

    databricks bundle destroy
    
  2. Confirme a solicitação de exclusão de trabalho: Quando solicitado a destruir recursos permanentemente, digite y e pressione Enter.

  3. Confirme a solicitação de exclusão de blocos de anotações: Quando solicitado a destruir permanentemente a pasta implantada anteriormente e todos os seus arquivos, digite y e pressione Enter.

A execução do bundle destroy comando exclui apenas o trabalho implantado e a pasta que contém os dois blocos de anotações implantados. Este comando não elimina quaisquer efeitos secundários, como o babynames.csv ficheiro que o primeiro bloco de notas criou. Para excluir o arquivo, faça o babybnames.csv seguinte:

  1. Na barra lateral do seu espaço de trabalho do Azure Databricks, clique em Catálogo.
  2. Clique em Procurar DBFS.
  3. Clique na pasta FileStore .
  4. Clique na seta suspensa ao lado de babynames.csv e clique em Excluir.
  5. Se você também quiser excluir o pacote da sua máquina de desenvolvimento, agora você pode excluir o diretório local da Etapa 1.