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. Adicione suporte ao servidor de linguagem YAML ao Visual Studio Code, por exemplo, instalando a extensão YAML do Visual Studio Code marketplace.

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

    Bash
    databricks bundle schema > bundle_config_schema.json
  3. Na Etapa 5, o senhor 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
    # yaml-language-server: $schema=bundle_config_schema.json
nota

No comentário anterior, se o arquivo de esquema Databricks ativo Bundle configuration JSON estiver em um caminho diferente, substitua bundle_config_schema.json pelo caminho completo do arquivo de esquema.

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 Autorizar o acesso autônomo a Databricks recurso com uma entidade de serviço usando OAuth.

  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.