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. Esses passos 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 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 de espaço de trabalho?
o passo 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.
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 repo para esta demonstração, o site Databricks recomenda que o repo esteja vazio ou tenha apenas arquivos básicos, como README
e .gitignore
. Caso contrário, qualquer arquivo pré-existente no repo poderá ser sincronizado desnecessariamente com o seu Databricks workspace.
passo 2: Adicionar Notebook ao projeto
Neste passo, 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. Em seguida, 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
:# 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
:# 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")))
o passo 3: Adicionar um arquivo de esquema de configuração de pacote ao projeto
Se estiver usando um IDE, como o Visual Studio Code, o PyCharm Professional ou o 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. Embora o arquivo de configuração do pacote que o senhor criará mais tarde no passo 5 seja baseado em YAML, o arquivo de esquema de configuração do pacote neste passo é baseado em JSON.
Adicione o suporte do servidor de linguagem YAML ao Visual Studio Code, por exemplo, instalando a extensão YAML do Visual Studio Code Marketplace.
Gere o arquivo de esquema de configuração do Databricks ativo Bundle JSON usando o Databricks CLI para executar o comando
bundle schema
e redirecionar a saída para um arquivo JSON. Por exemplo, gere um arquivo chamadobundle_config_schema.json
no diretório atual, da seguinte forma:databricks bundle schema > bundle_config_schema.json
No passo 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-language-server: $schema=bundle_config_schema.json
Observação
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.
Gere o arquivo de esquema de configuração do Databricks ativo Bundle JSON usando o Databricks CLI para executar o comando
bundle schema
e redirecione a saída para um arquivo JSON. Por exemplo, gere um arquivo chamadobundle_config_schema.json
no diretório atual, da seguinte forma: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.
No passo 5, o senhor usará o site PyCharm para criar ou abrir um arquivo de configuração de pacote. Por convenção, esse arquivo tem o nome
databricks.yml
.
Gere o arquivo de esquema de configuração do Databricks ativo Bundle JSON usando o Databricks CLI para executar o comando
bundle schema
e redirecionar a saída para um arquivo JSON. Por exemplo, gere um arquivo chamadobundle_config_schema.json
no diretório atual, da seguinte forma: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.
No passo 5, o senhor usará o site IntelliJ IDEA para criar ou abrir um arquivo de configuração de pacote. Por convenção, esse arquivo tem o nome
databricks.yml
.
passo 4: configurar a autenticação
Neste passo, 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.
Observação
A autenticação U2M é adequada para experimentar esses passos 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 a CLI do Databricks para iniciar o gerenciamento de tokens OAuth localmente executando o seguinte comando para cada workspace de destino.
No comando a seguir, substitua
<workspace-url>
pelo URL da instância do seu workspace do Databricks, por exemplohttps://dbc-a1b2345c-d6e7.cloud.databricks.com
.databricks 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.
o passo 5: Adicionar um arquivo de configuração de pacote ao projeto
Neste passo, o senhor define como implantar e executar os dois Notebook. 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
databricks.yml
arquivo , substituindo<workspace-url>
pelo URL do seu espaço de trabalho , por exemplo,https://dbc-a1b2345c-d6e7.cloud.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 o passo 3 anteriormente 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: i3.xlarge
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
Você pode definir, combinar e substituir as configurações de novos clusters de jobs em pacotes usando as técnicas descritas em Substituir configurações de cluster nos Pacotes de Ativos do Databricks.
o passo 6: Validar o arquivo de configuração do pacote do projeto
Neste passo, o senhor verifica se a configuração do pacote é válida.
Use o endereço Databricks CLI para executar o comando
bundle validate
, como segue:databricks bundle validate
Se um resumo da configuração do pacote for retornado, a validação foi bem-sucedida. Se algum erro for retornado, corrija os erros e repita este passo.
Se o senhor fizer alguma alteração no pacote após esse passo, deverá repetir esse passo para verificar se a configuração do pacote ainda é válida.
passo 7: aprimorar o projeto local para o espaço de trabalho remoto
Neste passo, o senhor implantou os dois Notebooks locais no seu Databricks workspace remoto e criou o Databricks Job no seu workspace.
Use o endereço Databricks CLI para executar o comando
bundle deploy
da seguinte forma:databricks 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 o senhor fizer alguma alteração no pacote após esse passo, deverá repetir os passos 6 a 7 para verificar se a configuração do pacote ainda é válida e, em seguida, reimplantar o projeto.
passo 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:databricks 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 o senhor fizer alguma alteração no pacote após esse passo, deverá repetir os passos 6-8 para verificar se a configuração do pacote ainda é válida, reimplantar o projeto e executar o projeto reimplantado.
passo 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:databricks 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 o senhor também quiser excluir o pacote da máquina de desenvolvimento, poderá excluir o diretório local do passo 1.