Partilhar via


Migrar recursos existentes para um pacote

Ao criar seu pacote, convém incluir recursos do Databricks que já existem e estão totalmente configurados no espaço de trabalho remoto. Você pode usar o comando Databricks CLI bundle generate para gerar automaticamente rapidamente a configuração em seu pacote para aplicativos, painéis, trabalhos e pipelines existentes. Veja databricks bundle generate. A configuração que se pode copiar e colar manualmente nos ficheiros de configuração de recursos de pacote está disponível na interface de utilizador do Databricks para alguns recursos, como tarefas e pipelines.

Depois de gerar a configuração de um recurso em seu pacote e implantá-lo, use o bundle deployment bind comando para vincular um recurso em seu pacote ao recurso correspondente no espaço de trabalho. Consulte databricks bundle deployment bind.

Esta página fornece exemplos simples que usam a CLI ou a interface do usuário do Databricks para gerar ou recuperar a configuração de recursos do pacote.

Para obter detalhes sobre definições de recursos em pacotes, consulte Recursos do Databricks Asset Bundles.

Gerar uma configuração de trabalho ou de pipeline existente com a CLI do Databricks

Para gerar programaticamente a configuração do pacote para um trabalho ou pipeline existente:

  1. Recupere o ID do trabalho ou pipeline existente no painel de Detalhes do trabalho ou Detalhes do pipeline na interface gráfica. Como alternativa, use o Databricks CLI databricks jobs list ou o comando databricks pipelines list-pipelines.

  2. Execute o comando bundle generate job ou o comando bundle generate pipelineDatabricks CLI, definindo o ID do trabalho ou do pipeline:

    databricks bundle generate job --existing-job-id 6565621249
    
    databricks bundle generate pipeline --existing-pipeline-id 6565621249
    

    Este comando cria um arquivo de configuração de pacote para o recurso na pasta do resources pacote e baixa todos os artefatos referenciados para a src pasta.

Você também pode gerar configuração para um painel existente. Consulte databricks bundle generate dashboard.

Recuperar uma definição de tarefa existente usando a interface do usuário

Para recuperar a representação YAML de uma definição de trabalho existente da interface do usuário do espaço de trabalho do Azure Databricks:

  1. Na barra lateral do espaço de trabalho do Azure Databricks, clique em Trabalhos & Pipelines.

  2. Opcionalmente, selecione os filtros Trabalhos e Propriedade de mim .

  3. Clique no link Nome da sua vaga.

  4. Ao lado do botão Executar agora , clique no kebab e, em seguida, clique em Editar como YAML.

  5. Copie o YAML e adicione-o ao ficheiro databricks.yml do seu pacote, ou crie um ficheiro de configuração para o seu trabalho no diretório resources do projeto do seu pacote e faça referência a partir do ficheiro databricks.yml. Consulte os recursos.

  6. Baixe e adicione todos os arquivos Python e blocos de anotações referenciados no trabalho existente à fonte do projeto do pacote. Normalmente, os artefatos de um bundle estão localizados no diretório src.

    Sugestão

    Você pode exportar um notebook existente de um espaço de trabalho do Azure Databricks para o formato .ipynb clicando em Ficheiro > Exportar > Notebook IPython na interface do usuário do Azure Databricks.

    Depois de adicionar seus blocos de anotações, arquivos Python e outros artefatos ao pacote, altere as referências a esses arquivos em sua definição de trabalho para seu local local. Por exemplo, caso tenhas um arquivo de configuração hello_job.job.yml na pasta resources do teu pacote, e descarregues um bloco de anotações chamado hello.ipynb para a pasta src do teu pacote, o seguinte seria o conteúdo do arquivo hello_job.job.yml:

    resources:
      jobs:
        hello_job:
          name: hello_job
          tasks:
            - task_key: hello_task
              notebook_task:
                notebook_path: ../src/hello.ipynb
    

Para obter mais informações sobre como exibir trabalhos como código na interface do usuário, consulte Exibir trabalhos como código.

Recuperar uma definição de pipeline existente usando a interface do usuário

Para recuperar a representação YAML de uma definição de pipeline existente da interface de utilizador do espaço de trabalho do Azure Databricks:

  1. Na barra lateral do espaço de trabalho do Azure Databricks, clique em Trabalhos & Pipelines.

  2. Opcionalmente, selecione o filtro Pipelines .

  3. Clique no Nome do seu pipeline.

  4. Ao lado do botão Desenvolvimento , clique no ícone do menu Kebab e, em seguida, clique em Exibir configurações YAML.

  5. Copie o YAML da definição de pipeline na caixa de diálogo Configurações do YAML do pipeline para a área de transferência local ao clicar no ícone de cópia.

  6. Adicione o YAML que você copiou ao arquivo do seu pacote databricks.yml, ou crie um arquivo de configuração para o seu pipeline na pasta resources do seu projeto de pacote e faça referência a ele a partir do seu arquivo databricks.yml. Consulte os recursos.

  7. Transfira e adicione quaisquer ficheiros Python e blocos de notas referenciados à origem do projeto do pacote. Normalmente, os artefatos de um bundle estão localizados no diretório src.

    Sugestão

    Você pode exportar um notebook existente de um espaço de trabalho do Azure Databricks para o formato .ipynb clicando em Ficheiro > Exportar > Notebook IPython na interface do usuário do Azure Databricks.

    Depois de adicionar seus blocos de anotações, arquivos Python e outros artefatos ao pacote, certifique-se de que sua definição de pipeline faça referência a eles corretamente. Por exemplo, para um bloco de anotações nomeado hello.ipynb que está no src/ diretório do pacote:

    resources:
      pipelines:
        hello_pipeline:
          name: hello_pipeline
          libraries:
            - notebook:
                path: ../src/hello.ipynb
    

Vincular um recurso à sua contraparte remota

Normalmente, depois de adicionar um recurso ao seu pacote, você desejará garantir que o recurso em seu pacote e o recurso existente no espaço de trabalho permaneçam sincronizados. O bundle deployment bind comando permite vinculá-los. Se você vincular um recurso, o recurso Azure Databricks vinculado no espaço de trabalho será atualizado com base na configuração definida no pacote no próximo bundle deploy.

Para obter mais informações bundle deployment bind e detalhes sobre o suporte a recursos, consulte databricks bundle deployment bind.

O comando a seguir vincula o recurso hello_job à sua contraparte remota no espaço de trabalho. Ele solicita uma confirmação para garantir que as atualizações da configuração de trabalho no pacote sejam aplicadas ao trabalho remoto correspondente quando o pacote for implantado na próxima vez.

databricks bundle deployment bind hello_job 6565621249

Para remover o vínculo entre um recurso de pacote e sua contraparte no espaço de trabalho, use bundle deployment unbind. Consulte databricks bundle deployment unbind.

databricks bundle deployment unbind hello_job

Migrar um recurso que existe em dois espaços de trabalho

Em algumas configurações, o mesmo recurso pode existir em mais de um espaço de trabalho. Por exemplo, o mesmo trabalho pode estar em um espaço de trabalho de desenvolvimento e produção. Se o trabalho existente for adicionado ao pacote e, em seguida, o pacote for implantado em um desses espaços de trabalho, trabalhos duplicados serão criados. Para evitar isso, use databricks bundle generate e databricks bundle deployment bind juntos:

  1. Defina os alvos dev e prod em seu pacote databricks.yml.

  2. Gere a configuração do pacote para o recurso (neste exemplo, um trabalho) no destino do desenvolvedor:

    databricks bundle generate job --existing-job-id <dev_job_id> –-target dev
    
  3. A configuração do recurso em prod provavelmente será diferente da configuração do recurso em dev, portanto, agora que você gerou a configuração para o recurso, defina as configurações específicas de produção para o recurso (no destino prod) no pacote.

    targets:
      dev:
        default: true
        #...
      prod:
        #...
        resources:
          jobs:
            my_job:
              # Job prod settings
    
  4. Vincule o recurso no pacote ao trabalho existente nos destinos dev e prod:

    databricks bundle deployment bind my_job <dev_job_id> --target dev
    
    databricks bundle deployment bind my_job <prod_job_id> --target prod
    

O pacote agora pode ser implantado nos dois ambientes:

databricks bundle deploy --target dev
databricks bundle deploy --target prod