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
- Databricks CLI versão 0.218.0 ou superior. Para verificar a versão instalada da CLI do Databricks, execute o comando
databricks -v
. Para instalar a CLI do Databricks, consulte Instalar ou atualizar a CLI do Databricks. - Autenticação configurada para a CLI do Databricks. Consulte Autenticação para a CLI do Databricks.
- O espaço de trabalho remoto Databricks deve ter arquivos de espaço de trabalho habilitados. Consulte O que são arquivos de espaço de trabalho?.
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.
- Crie ou identifique um diretório vazio em sua máquina de desenvolvimento.
- 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.
A partir da raiz do diretório, crie o primeiro bloco de anotações, um arquivo chamado
retrieve-baby-names.py
.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)
Crie o segundo bloco de anotações, um arquivo chamado
filter-baby-names.py
, no mesmo diretório.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
Adicione suporte ao servidor de idiomas YAML ao Visual Studio Code, por exemplo, instalando a extensão YAML do Visual Studio Code Marketplace.
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 nomeadobundle_config_schema.json
no diretório atual, da seguinte maneira:databricks bundle schema > bundle_config_schema.json
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
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 nomeadobundle_config_schema.json
no diretório atual, da seguinte maneira:databricks bundle schema > bundle_config_schema.json
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.
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.yml
de .
IntelliJ IDEA Ultimate
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 nomeadobundle_config_schema.json
no diretório atual, da seguinte maneira:databricks bundle schema > bundle_config_schema.json
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.
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.yml
de .
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.
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>
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 comandodatabricks auth env --profile <profile-name>
.No navegador da Web, conclua as instruções na tela para fazer logon no espaço de trabalho do Azure Databricks.
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.
- A partir da raiz do diretório, crie o arquivo de configuração do pacote, um arquivo chamado
databricks.yml
. - Adicione o seguinte código ao
databricks.yml
arquivo, substituindo<workspace-url>
pelo URL por espaço de trabalho, por exemplohttps://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.
Use a CLI do Databricks para executar o
bundle validate
comando, da seguinte maneira:databricks bundle validate
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.
Use a CLI do Databricks para executar o
bundle deploy
comando da seguinte maneira:databricks bundle deploy -t development
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.
Clique na pasta Users >>
<your-username>
.bundle > baby-names > development > files. Os dois blocos de notas devem estar nesta pasta.Verifique se o trabalho foi criado: na barra lateral do seu espaço de trabalho do Azure Databricks, clique em Fluxos de trabalho.
Na guia Trabalhos, clique em retrieve-filter-baby-names-job.
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.
Use a CLI do Databricks para executar o
bundle run
comando, da seguinte maneira:databricks bundle run -t development retrieve-filter-baby-names-job
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.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.
Use a CLI do Databricks para executar o
bundle destroy
comando, da seguinte maneira:databricks bundle destroy
Confirme a solicitação de exclusão de trabalho: Quando solicitado a destruir recursos permanentemente, digite
y
e pressioneEnter
.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 pressioneEnter
.
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:
- Na barra lateral do seu espaço de trabalho do Azure Databricks, clique em Catálogo.
- Clique em Procurar DBFS.
- Clique na pasta FileStore .
- Clique na seta suspensa ao lado de babynames.csv e clique em Excluir.
- 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.