Tworzenie potoku danych przy użyciu usługi Azure Data Factory, DevOps i uczenia maszynowego

Azure DevOps Services

Rozpocznij tworzenie potoku danych przy użyciu pozyskiwania danych, przekształcania danych i trenowania modelu.

Dowiedz się, jak pobierać dane z pliku CSV (wartości rozdzielane przecinkami) i zapisywać dane w usłudze Azure Blob Storage. Przekształć dane i zapisać je w obszarze przejściowym. Następnie wytrenuj model uczenia maszynowego przy użyciu przekształconych danych. Zapisz model w magazynie obiektów blob jako plik pickle języka Python.

Wymagania wstępne

Przed rozpoczęciem potrzebne są następujące elementy:

Aprowizuj zasoby platformy Azure

  1. Zaloguj się w witrynie Azure Portal.

  2. Z menu wybierz przycisk Cloud Shell . Po wyświetleniu monitu wybierz środowisko powłoki Bash .

    Screenshot showing where to select Cloud Shell from the menu.

    Uwaga

    Do utrwalania wszystkich plików tworzonych w usłudze Azure Cloud Shell potrzebny będzie zasób usługi Azure Storage. Po pierwszym otwarciu usługi Cloud Shell zostanie wyświetlony monit o utworzenie grupy zasobów, konta magazynu i udziału usługi Azure Files. Ta konfiguracja jest automatycznie używana dla wszystkich przyszłych sesji usługi Cloud Shell.

Wybieranie regionu platformy Azure

Region to co najmniej jedno centrum danych platformy Azure w lokalizacji geograficznej. Przykładami regionów są Wschodnie stany USA, Zachodnie stany USA i Europa Północna. Każdy zasób platformy Azure, w tym wystąpienie usługi App Service, jest przypisany do regionu.

Aby ułatwić uruchamianie poleceń, zacznij od wybrania domyślnego regionu. Po określeniu regionu domyślnego późniejsze polecenia używają tego regionu, chyba że określisz inny region.

  1. W usłudze Cloud Shell uruchom następujące az account list-locations polecenie, aby wyświetlić listę regionów dostępnych w ramach subskrypcji platformy Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Z kolumny Name w danych wyjściowych wybierz region, który jest blisko Ciebie. Na przykład wybierz lub asiapacificwestus2.

  3. Uruchom polecenie az config , aby ustawić domyślny region. W poniższym przykładzie zastąp <REGION> ciąg nazwą wybranego regionu.

    az config set defaults.location=<REGION>
    

    Poniższy przykład ustawia westus2 jako domyślny region.

    az config set defaults.location=westus2
    

Tworzenie zmiennych powłoki Bash

  1. W usłudze Cloud Shell wygeneruj liczbę losową. Użyjesz tej liczby do utworzenia globalnie unikatowych nazw dla niektórych usług w następnym kroku.

    resourceSuffix=$RANDOM
    
  2. Utwórz globalnie unikatowe nazwy dla konta magazynu i magazynu kluczy. Następujące polecenia używają podwójnych cudzysłowów, które instruują powłokę Bash, aby interpolować zmienne przy użyciu składni wbudowanej.

    storageName="datacicd${resourceSuffix}"
    keyVault="keyvault${resourceSuffix}"
    
  3. Utwórz jeszcze jedną zmienną powłoki Bash, aby przechowywać nazwy i region grupy zasobów. W poniższym przykładzie zastąp ciąg <REGION> regionem wybranym dla regionu domyślnego.

    rgName='data-pipeline-cicd-rg'
    region='<REGION>'
    
  4. Utwórz nazwy zmiennych dla wystąpień usług Azure Data Factory i Azure Databricks.

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

Tworzenie zasobów platformy Azure

  1. Uruchom następujące az group create polecenie, aby utworzyć grupę zasobów przy użyciu polecenia rgName.

    az group create --name $rgName
    
  2. Uruchom następujące az storage account create polecenie, aby utworzyć nowe konto magazynu.

    az storage account create \
        --name $storageName \
        --resource-group $rgName \
        --sku Standard_RAGRS \
        --kind StorageV2
    
  3. Uruchom następujące az storage container create polecenie, aby utworzyć dwa kontenery i rawdataprepareddata.

    az storage container create -n rawdata --account-name $storageName 
    az storage container create -n prepareddata --account-name $storageName 
    
  4. Uruchom następujące az keyvault create polecenie, aby utworzyć nowy magazyn kluczy.

    az keyvault create \
        --name $keyVault \
        --resource-group $rgName
    
  5. Utwórz nową fabrykę danych przy użyciu interfejsu użytkownika portalu lub interfejsu wiersza polecenia platformy Azure:

    • Nazwa: data-factory-cicd-dev
    • Wersja: V2
    • Grupa zasobów: data-pipeline-cicd-rg
    • Lokalizacja: Najbliższa lokalizacja
    • Wyczyść zaznaczenie opcji Włącz usługę Git.
    1. Dodaj rozszerzenie usługi Azure Data Factory.

      az extension add --name datafactory
      
    2. Uruchom następujące az datafactory create polecenie, aby utworzyć nową fabrykę danych.

       az datafactory create \
           --name data-factory-cicd-dev \
           --resource-group $rgName
      
    3. Skopiuj identyfikator subskrypcji. Twoja fabryka danych będzie używać tego identyfikatora później.

  6. Utwórz drugą fabrykę danych przy użyciu interfejsu użytkownika portalu lub interfejsu wiersza polecenia platformy Azure. Ta fabryka danych będzie używana do testowania.

    • Nazwa: data-factory-cicd-test
    • Wersja: V2
    • Grupa zasobów: data-pipeline-cicd-rg
    • Lokalizacja: Najbliższa lokalizacja
    • Wyczyść zaznaczenie opcji Włącz usługę GIT.
    1. Uruchom następujące az datafactory create polecenie, aby utworzyć nową fabrykę danych na potrzeby testowania.

       az datafactory create \
           --name data-factory-cicd-test \
           --resource-group $rgName
      
    2. Skopiuj identyfikator subskrypcji. Twoja fabryka danych będzie używać tego identyfikatora później.

  7. Dodaj nową usługę Azure Databricks:

    • Grupa zasobów: data-pipeline-cicd-rg
    • Nazwa obszaru roboczego: databricks-cicd-ws
    • Lokalizacja: Najbliższa lokalizacja
    1. Dodaj rozszerzenie usługi Azure Databricks, jeśli nie zostało jeszcze zainstalowane.

       az extension add --name databricks
      
    2. Uruchom następujące az databricks workspace create polecenie, aby utworzyć nowy obszar roboczy.

      az databricks workspace create \
          --resource-group $rgName \
          --name databricks-cicd-ws  \
          --location eastus2  \
          --sku trial
      
    3. Skopiuj identyfikator subskrypcji. Usługa Databricks będzie używać tego identyfikatora później.

Przekazywanie danych do kontenera magazynu

  1. W witrynie Azure Portal otwórz konto magazynu w data-pipeline-cicd-rg grupie zasobów.
  2. Przejdź do pozycji Kontenery usługi Blob Service>.
  3. prepareddata Otwórz kontener.
  4. Przekaż plik sample.csv.

Ustawianie magazynu Key Vault

Użyjesz usługi Azure Key Vault do przechowywania wszystkich informacji o połączeniu dla usług platformy Azure.

Tworzenie osobistego tokenu dostępu usługi Databricks

  1. W witrynie Azure Portal przejdź do usługi Databricks, a następnie otwórz obszar roboczy.
  2. W interfejsie użytkownika usługi Azure Databricks utwórz i skopiuj osobisty token dostępu.

Kopiowanie klucza konta i parametry połączenia dla konta magazynu

  1. Przejdź do swojego konta magazynu.
  2. Otwórz pozycję Klucze dostępu.
  3. Skopiuj pierwszy klucz i parametry połączenia.

Zapisywanie wartości w usłudze Key Vault

  1. Utwórz trzy wpisy tajne:

    • databricks-token: your-databricks-pat
    • Klucz magazynu: your-storage-key
    • Storage Połączenie String:your-storage-connection
  2. Uruchom następujące az keyvault secret set polecenie, aby dodać wpisy tajne do magazynu kluczy.

    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"
    

Importowanie rozwiązania potoku danych

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
  2. Przejdź do obszaru Repozytoria , a następnie zaimportuj rozwidlone wersje repozytorium GitHub. Aby uzyskać więcej informacji, zobacz Importowanie repozytorium Git do projektu.

Dodawanie połączenia usługi Azure Resource Manager

  1. Utwórz połączenie usługi Azure Resource Manager.
  2. Wybierz pozycję Jednostka usługi (automatyczna).
  3. Wybierz grupę zasobów data-pipeline-cicd-rg .
  4. Nadaj połączeniu azure_rm_connectionusługi nazwę .
  5. Wybierz pozycję Udziel uprawnień dostępu do wszystkich potoków. Aby wybrać tę opcję, musisz mieć rolę Połączenie ions usługi Administracja istrator.

Dodawanie zmiennych potoku

  1. Utwórz nową grupę zmiennych o nazwie datapipeline-vg.

  2. Dodaj rozszerzenie Usługi Azure DevOps, jeśli nie zostało jeszcze zainstalowane.

    az extension add --name azure-devops 
    
  3. Zaloguj się do organizacji usługi 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. Utwórz drugą grupę zmiennych o nazwie keys-vg. Ta grupa będzie ściągać zmienne danych z usługi Key Vault.

  5. Wybierz pozycję Połącz wpisy tajne z usługi Azure Key Vault jako zmienne. Aby uzyskać więcej informacji, zobacz Łączenie wpisów tajnych z usługi Azure Key Vault.

  6. Autoryzowanie subskrypcji platformy Azure.

  7. Wybierz wszystkie dostępne wpisy tajne, które mają zostać dodane jako zmienne (databricks-token,StorageConnectString,StorageKey).

Konfigurowanie usług Azure Databricks i Azure Data Factory

Wykonaj kroki opisane w następnych sekcjach, aby skonfigurować usługi Azure Databricks i Azure Data Factory.

Tworzenie aplikacji testscope w usłudze Azure Databricks

  1. W witrynie Azure Portal przejdź do pozycji Właściwości magazynu>kluczy.
  2. Skopiuj nazwę DNS i identyfikator zasobu.
  3. W obszarze roboczym usługi Azure Databricks utwórz zakres wpisów tajnych o nazwie testscope.

Dodawanie nowego klastra w usłudze Azure Databricks

  1. W obszarze roboczym usługi Azure Databricks przejdź do pozycji Klastry.
  2. Wybierz pozycję Utwórz klaster.
  3. Nazwij i zapisz nowy klaster.
  4. Wybierz nową nazwę klastra.
  5. W ciągu adresu URL skopiuj zawartość między /clusters/ i /configuration. Na przykład w ciągu clusters/0306-152107-daft561/configurationskopiuj wartość 0306-152107-daft561.
  6. Zapisz ten ciąg, aby użyć go później.

Konfigurowanie repozytorium kodu w usłudze Azure Data Factory

  1. W usłudze Azure Data Factory przejdź do pozycji Tworzenie i monitorowanie. Aby uzyskać więcej informacji, zobacz Tworzenie fabryki danych.
  2. Wybierz pozycję Skonfiguruj repozytorium kodu, a następnie połącz repozytorium.
    • Typ repozytorium: Azure DevOps Git
    • Organizacja usługi Azure DevOps: Aktywne konto
    • Nazwa projektu: Projekt potoku danych usługi Azure DevOps
    • Nazwa repozytorium Git: użyj istniejącej.
      • Wybierz gałąź główną do współpracy.
      • Ustaw /azure-data-pipeline/factorydata jako folder główny.
    • Gałąź do zaimportowania zasobu do: wybierz pozycję Użyj istniejącej i głównej.
  1. W interfejsie użytkownika witryny Azure Portal otwórz magazyn kluczy.
  2. Wybierz opcję Uzyskaj dostęp do zasad.
  3. Wybierz opcję Dodaj zasady dostępu.
  4. W obszarze Konfiguruj na podstawie szablonu wybierz pozycję Zarządzanie kluczami i wpisami tajnymi.
  5. W obszarze Wybierz podmiot zabezpieczeń wyszukaj nazwę fabryki danych deweloperskich i dodaj ją.
  6. Wybierz pozycję Dodaj , aby dodać zasady dostępu.
  7. Powtórz te kroki, aby dodać zasady dostępu dla testowej fabryki danych.

Aktualizowanie połączonej usługi magazynu kluczy w usłudze Azure Data Factory

  1. Przejdź do pozycji Zarządzaj połączonymi usługami>.
  2. Zaktualizuj magazyn kluczy platformy Azure, aby nawiązać połączenie z subskrypcją.

Aktualizowanie połączonej usługi magazynu w usłudze Azure Data Factory

  1. Przejdź do pozycji Zarządzaj połączonymi usługami>.
  2. Zaktualizuj wartość usługi Azure Blob Storage, aby nawiązać połączenie z subskrypcją.

Aktualizowanie połączonej usługi Azure Databricks w usłudze Azure Data Factory

  1. Przejdź do pozycji Zarządzaj połączonymi usługami>.
  2. Zaktualizuj wartość usługi Azure Databricks, aby nawiązać połączenie z subskrypcją.
  3. W polu Istniejący identyfikator klastra wprowadź zapisaną wcześniej wartość klastra.

Testowanie i publikowanie fabryki danych

  1. W usłudze Azure Data Factory przejdź do pozycji Edytuj.
  2. Otwórz DataPipeline.
  3. Wybierz pozycję Zmienne.
  4. Sprawdź, czy element storage_account_name odnosi się do konta magazynu w witrynie Azure Portal. W razie potrzeby zaktualizuj wartość domyślną. Zapisz zmiany.
  5. Wybierz pozycję Zweryfikuj, aby zweryfikować DataPipeline.
  6. Wybierz pozycję Publikuj, aby opublikować zasoby fabryki danych w adf_publish gałęzi repozytorium.

Uruchamianie potoku ciągłej integracji/ciągłego wdrażania

Wykonaj następujące kroki, aby uruchomić potok ciągłej integracji i ciągłego dostarczania (CI/CD):

  1. Przejdź do strony Potoki . Następnie wybierz akcję, aby utworzyć nowy potok.
  2. Wybierz pozycję Azure Repos Git jako lokalizację kodu źródłowego.
  3. Po wyświetleniu listy repozytoriów wybierz repozytorium.
  4. Podczas konfigurowania potoku wybierz pozycję Istniejący plik YAML usługi Azure Pipelines. Wybierz plik YAML: /azure-data-pipeline/data_pipeline_ci_cd.yml.
  5. Uruchom potok. Jeśli potok nie został wcześniej uruchomiony, może być konieczne nadanie uprawnień dostępu do zasobu podczas uruchamiania.

Czyszczenie zasobów

Jeśli nie zamierzasz nadal korzystać z tej aplikacji, usuń potok danych, wykonując następujące kroki:

  1. Usuń grupę data-pipeline-cicd-rg zasobów.
  2. Usuń projekt usługi Azure DevOps.

Następne kroki