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
- Databricks CLI versão 0.218.0 ou acima. Para verificar a versão instalada do site Databricks CLI, execute o comando
databricks -v
. Para instalar a CLI da Databricks, consulte Instalar ou atualizar a CLI da Databricks. - Autenticação configurada para a CLI do Databricks. Consulte Autenticação para a CLI do Databricks.
- O site remoto Databricks workspace deve ter os arquivos workspace ativados. Consulte O que são arquivos workspace?
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.
- Crie ou identifique um diretório vazio na sua máquina de desenvolvimento.
- Mude para o diretório vazio em seu terminal ou abra-o em seu IDE.
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.
-
Na raiz do diretório, crie o primeiro Notebook, um arquivo chamado
retrieve-baby-names.py
. -
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) -
Crie o segundo Notebook, um arquivo chamado
filter-baby-names.py
, no mesmo diretório. -
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.
- Visual Studio Code
- PyCharm Professional
- IntelliJ IDEA Ultimate
-
Add YAML language server support to Visual Studio Code, for example by installing the YAML extension from the Visual Studio Code Marketplace.
-
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 namedbundle_config_schema.json
in the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
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
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.
-
Generate the Databricks Asset Bundle configuration JSON schema file using the Databricks CLI to run the
bundle schema
command and redirect the output to a JSON file. For example, generate a file namedbundle_config_schema.json
in the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
Configure PyCharm to recognize the bundle configuration JSON schema file, and then complete the JSON schema mapping, by following the instructions in Configure a custom JSON schema.
-
In Step 5 you will use PyCharm to create or open a bundle configuration file. By convention, this file is named
databricks.yml
.
-
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 namedbundle_config_schema.json
in the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
Configure IntelliJ IDEA to recognize the bundle configuration JSON schema file, and then complete the JSON schema mapping, by following the instructions in Configure a custom JSON schema.
-
In Step 5 you will use IntelliJ IDEA to create or open a bundle configuration file. By convention, this file is named
databricks.yml
.
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.
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.
-
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, porhttps://1234567890123456.7.gcp.databricks.com
exemplo,.Bashdatabricks auth login --host <workspace-url>
-
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 comandodatabricks auth env --profile <profile-name>
. -
No navegador da web, conclua as instruções na tela para fazer log in no workspace do Databricks.
-
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.
- Na raiz do diretório, crie o arquivo de configuração do pacote, um arquivo chamado
databricks.yml
. - 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
:
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-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 .
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.
-
Use o endereço Databricks CLI para executar o comando
bundle validate
, como segue:Bashdatabricks bundle validate
-
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.
-
Use o endereço Databricks CLI para executar o comando
bundle deploy
da seguinte forma:Bashdatabricks bundle deploy -t development
-
Verifique se os dois Notebook locais foram implantados: Na barra lateral do workspace do Databricks, clique em workspace .
-
Clique na pasta Users >
<your-username>
> .bundle > baby-names > development > files . Os dois Notebooks devem estar nessa pasta. -
Verifique se o Job foi criado: Na barra lateral do workspace do Databricks, clique em fluxo de trabalho .
-
Em Jobs tab, clique em retrieve-filter-baby-names-Job .
-
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.
-
Use o endereço Databricks CLI para executar o comando
bundle run
, como segue:Bashdatabricks bundle run -t development retrieve-filter-baby-names-job
-
Copie o valor de
Run URL
que aparece no terminal e cole-o no navegador da Web para abrir o site Databricks workspace. -
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.
-
Use o endereço Databricks CLI para executar o comando
bundle destroy
, como segue:Bashdatabricks bundle destroy
-
Confirme a solicitação de exclusão do trabalho: Quando solicitado a destruir permanentemente o recurso, digite
y
e pressioneEnter
. -
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 pressioneEnter
.
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:
- Na barra lateral do site Databricks workspace, clique em Catalog (Catálogo ).
- Clique em Browse DBFS .
- Clique na pasta FileStore .
- Clique na seta dropdown 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.