Pular para o conteúdo principal

Crie um pacote manualmente

Neste tutorial, o senhor cria um Databricks ativo Bundle do zero. Esse pacote simples consiste em dois notebooks e na definição de um Databricks Job para executar esses notebooks. Em seguida, o senhor valida, implanta e executa o Job em seu Databricks workspace. Essas etapas automatizam o início rápido intitulado Create your first fluxo de trabalho with a Databricks Job.

Requisitos

Etapa 1: criar o pacote

Um pacote contém os artefatos que o senhor deseja implantar e as configurações do recurso que deseja executar.

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

O senhor também pode usar um diretório que contenha um repositório clonado de um provedor Git. Isso permite que o senhor gerencie seu pacote com controle de versão externo e colabore mais facilmente com outros desenvolvedores e profissionais do IT em seu projeto.

Se o senhor optar por clonar um repositório para esta demonstração, a Databricks recomenda que o repositório esteja vazio ou tenha apenas arquivos básicos, como README e .gitignore. Caso contrário, qualquer arquivo pré-existente no repositório poderá ser sincronizado desnecessariamente com o seu Databricks workspace.

Etapa 2: Adicionar o Notebook ao projeto

Nesta etapa, o senhor adiciona dois Notebook ao seu projeto. O primeiro Notebook obtém uma lista de nomes de bebês em alta desde 2007 da fonte pública de dados do New York State Department of Health. Consulte Nomes de bebês: tendências por nome: início de 2007 no site do departamento. O primeiro Notebook salva esses dados no volume Databricks Unity Catalog chamado my-volume em um esquema chamado default em um catálogo chamado main. O segundo Notebook consulta os dados salvos e exibe contagens agregadas dos nomes de bebês por primeiro nome e sexo para 2014.

  1. Na raiz do diretório, crie o primeiro Notebook, um arquivo chamado retrieve-baby-names.py.

  2. Adicione o código a seguir ao arquivo retrieve-baby-names.py:

    Python
    # 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 Notebook, um arquivo chamado filter-baby-names.py, no mesmo diretório.

  4. Adicione o código a seguir ao arquivo filter-baby-names.py:

    Python
    # 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 do pacote ao projeto

Se estiver usando um IDE, como o Visual Studio Code, PyCharm Professional ou IntelliJ IDEA Ultimate, que ofereça suporte a arquivos YAML e arquivos de esquema JSON, o usuário poderá usar o IDE não apenas para criar o arquivo de esquema de configuração do pacote, mas também para verificar a sintaxe e a formatação do arquivo de configuração do pacote do projeto. Enquanto o arquivo de configuração do pacote que o senhor cria posteriormente na Etapa 5 é baseado em YAML, o arquivo de esquema de configuração do pacote nesta etapa é baseado em JSON.

  1. Add YAML language server support to Visual Studio Code, for example by installing the YAML extension from the Visual Studio Code Marketplace.

  2. Generate the Databricks Asset Bundle configuration JSON schema file by using the Databricks CLI to run the bundle schema command and redirect the output to a JSON file. For example, generate a file named bundle_config_schema.json in the current directory, as follows:

    Bash
    databricks bundle schema > bundle_config_schema.json
  3. In Step 5 you will add the following comment to the beginning of your bundle configuration file, which associates your bundle configuration file with the specified JSON schema file:

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

In the preceding comment, if your Databricks Asset Bundle configuration JSON schema file is in a different path, replace bundle_config_schema.json with the full path to your schema file.

Etapa 4: configurar a autenticação

Nesta etapa, o senhor configura a autenticação entre o Databricks CLI em sua máquina de desenvolvimento e o Databricks workspace. Este artigo pressupõe que o senhor deseja usar a autenticação OAuth user-to-machine (U2M) e um perfil de configuração Databricks correspondente denominado DEFAULT para autenticação.

nota

A autenticação U2M é adequada para testar essas etapas em tempo real. Para fluxo de trabalho totalmente automatizado, o site Databricks recomenda que o senhor use a autenticação máquina a máquina (M2M) OAuth. Consulte as instruções de configuração da autenticação M2M em Autenticação.

  1. Use o comando Databricks CLI para iniciar o gerenciamento de tokens OAuth localmente, executando o seguinte comando para cada destino workspace.

    No comando a seguir, substitua <workspace-url> pelo Databricks workspace URL da instância, por https://1234567890123456.7.gcp.databricks.com exemplo,.

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

    Para obter uma lista de todos os 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 log in no workspace do Databricks.

  4. Para visualizar o valor atual do token OAuth de um perfil e o registro de data e 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 valor --host, talvez seja necessário especificar as opções --host e -p juntas para ajudar a CLI do Databricks a encontrar as informações de token OAuth correspondentes corretas.

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

Nesta etapa, o senhor define como implantar e executar os dois Notebooks. Para esta demonstração, o senhor deseja usar um Databricks Job para executar o primeiro Notebook e, em seguida, o segundo Notebook. Como o primeiro Notebook salva os dados e o segundo Notebook consulta os dados salvos, o senhor deseja que o primeiro Notebook termine de ser executado antes de o segundo Notebook começar. Você modela esses objetivos em um arquivo de configuração de pacote em seu projeto.

  1. Na raiz do diretório, crie o arquivo de configuração do pacote, um arquivo chamado databricks.yml.
  2. Adicione o seguinte código ao arquivo databricks.yml, substituindo <workspace-url> pelo URLworkspace, por exemplo, https://1234567890123456.7.gcp.databricks.com. Esse URL deve corresponder ao do seu arquivo .databrickscfg:
dica

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

YAML
# 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: n2-highmem-4
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 o trabalho, os mapeamentos em uma declaração de trabalho correspondem à carga útil da solicitação, expressa no formato YAML, das operações de criação de trabalho, conforme documentado em POST /api/2.1/Job/create na referência REST API .

dica

O senhor pode definir, combinar e substituir as configurações de agrupamento de novos trabalhos em pacotes usando as técnicas descritas em Substituir configurações de agrupamento em Databricks ativo 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 o endereço Databricks CLI para executar o comando bundle validate, como segue:

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

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

Etapa 7: implantar o projeto local no projeto remoto workspace

Nesta etapa, o senhor implanta os dois Notebooks locais no seu Databricks workspace remoto e cria o Job Databricks no seu workspace.

  1. Use o endereço Databricks CLI para executar o comando bundle deploy da seguinte forma:

    Bash
    databricks bundle deploy -t development
  2. Verifique se os dois Notebook locais foram implantados: Na barra lateral do workspace do Databricks, clique em workspace .

  3. Clique na pasta Users > <your-username> > .bundle > baby-names > development > files . Os dois Notebooks devem estar nessa pasta.

  4. Verifique se o Job foi criado: Na barra lateral do workspace do Databricks, clique em fluxo de trabalho .

  5. Em Jobs tab, clique em retrieve-filter-baby-names-Job .

  6. Clique na tarefa tab. Deve haver duas tarefas: retrieve-baby-names-tarefa e filter-baby-names-tarefa .

Se você fizer alguma alteração em seu pacote após essa 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: execução do projeto implantado

Nesta passo, você executa o Job do Databricks em seu workspace.

  1. Use o endereço Databricks CLI para executar o comando bundle run, como segue:

    Bash
    databricks bundle run -t development retrieve-filter-baby-names-job
  2. Copie o valor de Run URL que aparece no terminal e cole-o no navegador da Web para abrir o site Databricks workspace.

  3. No site Databricks workspace, depois que as duas tarefas forem concluídas com êxito e mostrarem barras de título verdes, clique na tarefa filter-baby-names-tarefa para ver os resultados da consulta.

Se fizer alguma alteração no pacote após essa etapa, repita as etapas 6 a 8 para verificar se a configuração do pacote ainda é válida, reimplante o projeto e execute o projeto reimplantado.

Etapa 9: Limpar

Nesta passo, você exclui os dois Notebook implantados e o Job do seu workspace.

  1. Use o endereço Databricks CLI para executar o comando bundle destroy, como segue:

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

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

A execução do comando bundle destroy exclui apenas o Job implantado e a pasta que contém os dois Notebooks implantados. Esse comando não exclui nenhum efeito colateral, como o arquivo babynames.csv que o primeiro Notebook criou. Para excluir o arquivo babybnames.csv, faça o seguinte:

  1. Na barra lateral do site Databricks workspace, clique em Catalog (Catálogo ).
  2. Clique em Browse DBFS .
  3. Clique na pasta FileStore .
  4. Clique na seta dropdown 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.