Criar um pipeline de dados usando Azure Data Factory, DevOps e machine learning

Azure DevOps Services

Comece a criar um pipeline de dados com ingestão de dados, transformação de dados e treinamento de modelo.

Saiba como capturar dados de um arquivo CSV (valores separados por vírgula) e salvar os dados no Armazenamento de Blobs do Azure. Transforme os dados e salve-os em uma área de preparo. Em seguida, treine um modelo de machine learning usando os dados transformados. Escreva o modelo no armazenamento de blobs como um arquivo pickle do Python.

Pré-requisitos

Antes de começar, você precisa de:

Provisionar recursos do Azure

  1. Entre no portal do Azure.

  2. No menu, selecione o botão Cloud Shell. Quando solicitado, selecione a experiência Bash.

    Screenshot showing where to select Cloud Shell from the menu.

    Observação

    Você precisará de um recurso de Armazenamento do Azure para persistir todos os arquivos criados no Azure Cloud Shell. Ao abrir o Cloud Shell pela primeira vez, você precisará criar um grupo de recursos, uma conta de armazenamento e um compartilhamento de Arquivos do Azure. Essa configuração é usada automaticamente para todas as sessões futuras do Cloud Shell.

Selecionar uma região do Azure

Uma região é um ou mais datacenters do Azure em uma localização geográfica. Leste dos EUA, Oeste dos EUA e Norte da Europa são exemplos de regiões. Cada recurso do Azure, incluindo uma instância do Serviço de Aplicativo, recebe uma região.

Para facilitar a execução dos comandos, comece selecionando uma região padrão. Depois que você especificar a região padrão, os comandos posteriores usarão essa região, a menos que você especifique outra.

  1. No Cloud Shell, execute o comando az account list-locations a seguir para listar as regiões que estão disponíveis na sua assinatura do Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Na coluna Name na saída, escolha uma região perto de você. Por exemplo, escolha asiapacific ou westus2.

  3. Execute az config para definir a região padrão. No exemplo a seguir, substitua <REGION> pelo nome da região escolhida.

    az config set defaults.location=<REGION>
    

    O exemplo a seguir define westus2 como a região padrão.

    az config set defaults.location=westus2
    

Criar variáveis Bash

  1. No Cloud Shell, gere um número aleatório. Você usará esse número para criar nomes globalmente exclusivos para determinados serviços na próxima etapa.

    resourceSuffix=$RANDOM
    
  2. Crie nomes globalmente exclusivos para sua conta de armazenamento e cofre de chaves. Os comandos a seguir usam aspas duplas, que instruem Bash a interpolar as variáveis usando a sintaxe embutida.

    storageName="datacicd${resourceSuffix}"
    keyVault="keyvault${resourceSuffix}"
    
  3. Crie mais uma variável Bash para armazenar os nomes e a região do grupo de recursos. No exemplo a seguir, substitua <REGION> pela região que você escolheu para a região padrão.

    rgName='data-pipeline-cicd-rg'
    region='<REGION>'
    
  4. Crie nomes de variáveis para suas instâncias do Azure Data Factory e do Azure Databricks.

    datafactorydev='data-factory-cicd-dev'
    datafactorytest='data-factory-cicd-test'
    databricksname='databricks-cicd-ws'
    

Criar recursos do Azure

  1. Execute o comando az group create a seguir para criar um grupo de recursos usando rgName.

    az group create --name $rgName
    
  2. Execute o comando az storage account create a seguir para criar uma conta de Armazenamento de Blobs.

    az storage account create \
        --name $storageName \
        --resource-group $rgName \
        --sku Standard_RAGRS \
        --kind StorageV2
    
  3. Execute o comando az storage container create a seguir para criar dois contêineres, rawdata e prepareddata.

    az storage container create -n rawdata --account-name $storageName 
    az storage container create -n prepareddata --account-name $storageName 
    
  4. Execute o comando az keyvault create a seguir para criar um data cofre de chaves.

    az keyvault create \
        --name $keyVault \
        --resource-group $rgName
    
  5. Crie um data factory usando a interface do usuário do portal ou a CLI do Azure:

    • Nome: data-factory-cicd-dev
    • Versão: V2
    • Grupo de recursos: data-pipeline-cicd-rg
    • Local: sua localização mais próxima
    • Desmarque a seleção para Habilitar Git.
    1. Adicione a Extensão do Azure Data Factory.

      az extension add --name datafactory
      
    2. Execute o comando az datafactory create a seguir para criar um data factory.

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. Copie a ID da assinatura. Seu data factory usará essa ID posteriormente.

  6. Crie um segundo data factory usando a interface do usuário do portal ou a CLI do Azure. Você usará esse data factory para teste.

    • Nome: data-factory-cicd-test
    • Versão: V2
    • Grupo de recursos: data-pipeline-cicd-rg
    • Local: sua localização mais próxima
    • Desmarque a seleção para Habilitar GIT.
    1. Execute o comando a seguir az datafactory create para criar um data factory para teste.

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. Copie a ID da assinatura. Seu data factory usará essa ID posteriormente.

  7. Adicione um serviço do Azure Databricks:

    • Grupo de recursos: data-pipeline-cicd-rg
    • Nome do workspace: databricks-cicd-ws
    • Local: sua localização mais próxima
    1. Adicione a extensão do Azure Databricks se ela ainda não estiver instalada.

       az extension add --name databricks
      
    2. Execute o comando az databricks workspace create a seguir para criar o workspace.

      az databricks workspace create \
          --resource-group $rgName \
          --name databricks-cicd-ws  \
          --location eastus2  \
          --sku trial
      
    3. Copie a ID da assinatura. O serviço do Databricks usará essa ID posteriormente.

Carregar dados no contêiner de armazenamento

  1. No portal do Azure, abra sua conta de armazenamento no grupo de recursos data-pipeline-cicd-rg.
  2. Acesse Serviço de Blob>Contêineres.
  3. Abra o contêiner de prepareddata.
  4. Carregue o arquivo sample.csv.

Configurar o Cofre de Chaves

Você usará o Azure Key Vault para armazenar todas as informações de conexão para seus serviços do Azure.

Criar um token de acesso pessoal do Databricks

  1. Na portal do Azure, acesse o Databricks e abra seu workspace.
  2. Na interface do usuário do Azure Databricks, crie e copie um token de acesso pessoal.

Copiar a chave de conta e a cadeia de conexão para sua conta de armazenamento

  1. Vá até sua conta de armazenamento.
  2. Abra Chaves de Acesso.
  3. Copie a primeira chave e a cadeia de conexão.

Salvar valores no Key Vault

  1. Crie três segredos:

    • databricks-token: your-databricks-pat
    • StorageKey: your-storage-key
    • StorageConnectString: your-storage-connection
  2. Execute o comando az keyvault secret set a seguir para adicionar segredos ao cofre de chaves.

    az keyvault secret set --vault-name "$keyVault" --name "databricks-token" --value "your-databricks-pat"
    az keyvault secret set --vault-name "$keyVault" --name "StorageKey" --value "your-storage-key"
    az keyvault secret set --vault-name "$keyVault" --name "StorageConnectString" --value "your-storage-connection"
    

Importar a solução de pipeline de dados

  1. Entre na organização do Azure DevOps e acesse seu projeto.
  2. Vá para Repos e importe sua versão bifurcada do repositório GitHub. Para mais informações, confira Importar um repositório Git para seu projeto.

Adicionar uma conexão do serviço do Azure Resource Manager

  1. Criar uma conexão de serviço do Azure Resource Manager.
  2. Selecione Entidade de Serviço (automática).
  3. Escolha o grupo de recursos data-pipeline-cicd-rg.
  4. Dê à conexão de serviço o nome azure_rm_connection.
  5. Selecione Conceder permissão de acesso a todos os pipelines. Você precisará ter a função de Administrador do Service Connections para selecionar essa opção.

Adicionar variáveis de pipeline

  1. Crie um grupo de variáveis chamado datapipeline-vg.

  2. Adicione a extensão do Azure DevOps se ela ainda não estiver instalada.

    az extension add --name azure-devops 
    
  3. Entre na sua organização do Azure DevOps.

    az devops login --org https://dev.azure.com/<yourorganizationname>
    
    az pipelines variable-group create --name datapipeline-vg -p <yourazuredevopsprojectname> --variables \
                                        "LOCATION=$region" \
                                        "RESOURCE_GROUP=$rgName" \
                                        "DATA_FACTORY_NAME=$datafactorydev" \
                                        "DATA_FACTORY_DEV_NAME=$datafactorydev" \
                                        "DATA_FACTORY_TEST_NAME=$datafactorytest" \
                                        "ADF_PIPELINE_NAME=DataPipeline" \
                                        "DATABRICKS_NAME=$databricksname" \
                                        "AZURE_RM_CONNECTION=azure_rm_connection" \
                                        "DATABRICKS_URL=<URL copied from Databricks in Azure portal>" \
                                        "STORAGE_ACCOUNT_NAME=$storageName" \
                                        "STORAGE_CONTAINER_NAME=rawdata"
    
  4. Crie um segundo grupo de variáveis chamado keys-vg. Esse grupo extrairá variáveis de dados do Key Vault.

  5. Selecione Vincular segredos de um Azure Key Vault como variáveis. Para mais informações, confira Vincular segredos de um Azure Key Vault .

  6. Autorizar a assinatura do Azure.

  7. Escolha todos os segredos disponíveis para adicionar como variáveis (databricks-token,StorageConnectString,StorageKey).

Configurar o Azure Databricks e o Azure Data Factory

Siga as etapas nas próximas seções para configurar o Azure Databricks e o Azure Data Factory.

Criar testscope no Azure Databricks

  1. No portal do Azure, vá para Cofre de chaves>Propriedades.
  2. Copie o Nome DNS e a ID do Recurso.
  3. No workspace do Azure Databricks, crie um escopo secreto chamado testscope.

Adicionar um cluster no Azure Databricks

  1. No workspace do Azure Databricks, acesse Clusters.
  2. Selecione Criar Cluster.
  3. Dê um nome e salve o novo cluster.
  4. Selecione o novo nome do cluster.
  5. Na cadeia de caracteres de URL, copie o conteúdo entre /clusters/ e /configuration. Por exemplo, na cadeia de caracteres clusters/0306-152107-daft561/configuration, você copiaria 0306-152107-daft561.
  6. Salve essa cadeia de caracteres para usar mais tarde.

Configurar o repositório de código no Azure Data Factory

  1. No Azure Data Factory, vá para Criar e monitorar. Para mais informações, confira Criar um data factory.
  2. Selecione Configurar repositório de código e conecte seu repositório .
    • Tipo de repositório: Git do Azure DevOps
    • Organização do Azure DevOps: sua conta ativa
    • Nome do projeto: seu projeto de pipeline de dados do Azure DevOps
    • Nome do repositório Git: Usar existente.
      • Selecione a ramificação principal para colaboração.
      • Defina /azure-data-pipeline/factorydata como a pasta raiz.
    • Ramificação para a qual importar recurso: selecione Usar existente e principal.
  1. Na interface do usuário do portal do Azure, abra o cofre de chaves.
  2. Selecione Políticas de acesso.
  3. Selecione Adicionar Política de Acesso.
  4. Para Configurar do modelo, selecione Gerenciamento de Chave e Segredos.
  5. Em Selecionar entidade de segurança, pesquise o nome do data factory de desenvolvimento e adicione-o.
  6. Selecione Adicionar para adicionar suas políticas de acesso.
  7. Repita essas etapas para adicionar uma política de acesso ao data factory de teste.

Atualizar o serviço vinculado do cofre de chaves no Azure Data Factory

  1. Acesse Gerenciar>Serviços Vinculados.
  2. Atualize o Azure Key Vault para se conectar à sua assinatura.

Atualizar o serviço vinculado de armazenamento no Azure Data Factory

  1. Acesse Gerenciar>Serviços Vinculados.
  2. Atualize o valor Armazenamento de Blobs do Azure para se conectar à sua assinatura.

Atualizar o serviço vinculado do Azure Databricks no Azure Data Factory

  1. Acesse Gerenciar>Serviços Vinculados.
  2. Atualize o valor do Azure Databricks para se conectar à sua assinatura.
  3. Para a ID do Cluster Existente, insira o valor do cluster que você salvou anteriormente.

Testar e publicar o data factory

  1. No Azure Data Factory, vá para Editar.
  2. Abra o DataPipeline.
  3. Selecione Variáveis.
  4. Verifique se o storage_account_name se refere à sua conta de armazenamento no portal do Azure. Atualize o valor padrão, se necessário. Salve suas alterações.
  5. Selecione Validar para verificar DataPipeline.
  6. Selecione Publicar para publicar ativos do data factory no branch adf_publish do repositório.

Executar o pipeline de CI/CD

Siga estas etapas para executar o pipeline de CI/CD (integração contínua e entrega contínua):

  1. Vá para a página Pipelines. Em seguida, escolha a ação para criar um novo pipeline.
  2. Selecione Git do Azure Repos como a localização do código-fonte.
  3. Quando a lista de repositórios for exibida, selecione o repositório.
  4. Ao configurar o pipeline, selecione Arquivo YAML do Azure Pipelines existente. Escolha o arquivo YAML: /azure-data-pipeline/data_pipeline_ci_cd.yml.
  5. Execute o pipeline. Se o pipeline não tiver sido executado antes, talvez seja necessário conceder permissão para acessar um recurso durante a execução.

Limpar os recursos

Se você não quiser continuar usando esse aplicativo, exclua o pipeline de dados seguindo estas etapas:

  1. Exclua o grupo de recursos data-pipeline-cicd-rg.
  2. Exclua o projeto do Azure DevOps.

Próximas etapas