Samouczek: tworzenie potoku danych typu end-to-end w celu uzyskania szczegółowych informacji o sprzedaży w Azure HDInsight

W tym samouczku skompilowany zostanie potok danych typu end-to-end, który wykonuje operacje wyodrębniania, przekształcania i ładowania (ETL). Potok będzie używać klastrów Apache Spark i Apache Hive uruchomionych na Azure HDInsight do wykonywania zapytań o dane i manipulowania nimi. Użyjesz również technologii, takich jak Azure Data Lake Storage Gen2, do przechowywania danych i Power BI wizualizacji.

Ten potok danych łączy dane z różnych magazynów, usuwa wszelkie niepożądane dane, dołącza nowe dane i ładuje je z powrotem do magazynu w celu wizualizacji szczegółowych informacji biznesowych. Przeczytaj więcej na temat potoków ETL w tece Wyodrębnianie, przekształcanie i ładowanie (ETL) na dużą skalę.

Architektura ETL

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Wymagania wstępne

Tworzenie zasobów

Klonowanie repozytorium za pomocą skryptów i danych

  1. Zaloguj się do subskrypcji platformy Azure. Jeśli planujesz używać Azure Cloud Shell, wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu. W innym przypadku wprowadź poniższe polecenie:

    az login
    
    # If you have multiple subscriptions, set the one to use
    # az account set --subscription "SUBSCRIPTIONID"
    
  2. Upewnij się, że jesteś członkiem roli właścicielaplatformy Azure. Zastąp user@contoso.com wartość swoim kontem, a następnie wprowadź polecenie:

    az role assignment list \
    --assignee "user@contoso.com" \
    --role "Owner"
    

    Jeśli żaden rekord nie zostanie zwrócony, nie jesteś członkiem i nie będziesz w stanie ukończyć tego samouczka.

  3. Pobierz dane i skrypty dla tego samouczka z repozytorium ETL usługi HDInsight Sales Insights. Wprowadź następujące polecenie:

    git clone https://github.com/Azure-Samples/hdinsight-sales-insights-etl.git
    cd hdinsight-sales-insights-etl
    
  4. Upewnij salesdata scripts templates się, że utworzono. Sprawdź za pomocą następującego polecenia:

    ls
    

Wdrażanie zasobów platformy Azure wymaganych dla potoku

  1. Dodaj uprawnienia do wykonywania dla wszystkich skryptów, wprowadzając:

    chmod +x scripts/*.sh
    
  2. Ustaw zmienną dla grupy zasobów. Zastąp RESOURCE_GROUP_NAME element nazwą istniejącej lub nowej grupy zasobów, a następnie wprowadź polecenie:

    resourceGroup="RESOURCE_GROUP_NAME"
    
  3. Uruchom skrypt. Zastąp LOCATION wartość żądaną wartością, a następnie wprowadź polecenie:

    ./scripts/resources.sh $resourceGroup LOCATION
    

    Jeśli nie masz pewności, który region określić, możesz pobrać listę obsługiwanych regionów dla swojej subskrypcji za pomocą polecenia az account list-locations.

    Polecenie spowoduje wdrożenie następujących zasobów:

    • Konto usługi Azure Blob Storage. To konto będzie zawierać firmowe dane sprzedaży.
    • Konto usługi Azure Data Lake Storage Gen2. To konto będzie służyć jako konto magazynu dla obu klastrów usługi HDInsight. Dowiedz się więcej o usługach HDInsight i Data Lake Storage Gen2 Azure HDInsight integracji z usługą Data Lake Storage Gen2.
    • Tożsamość zarządzana przypisana przez użytkownika. To konto zapewnia klastrom usługi HDInsight dostęp do konta usługi Data Lake Storage Gen2.
    • Klaster Apache Spark klastra. Ten klaster będzie używany do czyszczenia i przekształcania danych pierwotnych.
    • Klaster Apache Hive Interactive Query klastra. Ten klaster umożliwia wykonywanie zapytań dotyczących danych sprzedaży i wizualizowanie ich za pomocą Power BI.
    • Sieć wirtualna platformy Azure obsługiwana przez reguły sieciowej grupy zabezpieczeń. Ta sieć wirtualna umożliwia klastrom komunikowanie się i zabezpieczanie komunikacji.

Tworzenie klastra może potrwać około 20 minut.

Domyślne hasło dostępu SSH do klastrów to Thisisapassword1 . Jeśli chcesz zmienić hasło, przejdź do pliku i zmień hasło ./templates/resourcesparameters_remainder.json parametrów , , i sparksshPasswordsparkClusterLoginPasswordllapClusterLoginPasswordllapsshPassword .

Weryfikowanie wdrożenia i zbieranie informacji o zasobach

  1. Jeśli chcesz sprawdzić stan wdrożenia, przejdź do grupy zasobów na stronie Azure Portal. W Ustawieniawybierz pozycję Wdrożenia,a następnie wdrożenie. W tym miejscu możesz zobaczyć zasoby, które zostały pomyślnie wdrożone, oraz zasoby, które są nadal w toku.

  2. Aby wyświetlić nazwy klastrów, wprowadź następujące polecenie:

    sparkClusterName=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.sparkClusterName.value')
    llapClusterName=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.llapClusterName.value')
    
    echo "Spark Cluster" $sparkClusterName
    echo "LLAP cluster" $llapClusterName
    
  3. Aby wyświetlić konto usługi Azure Storage i klucz dostępu, wprowadź następujące polecenie:

    blobStorageName=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.blobStorageName.value')
    
    blobKey=$(az storage account keys list \
        --account-name $blobStorageName \
        --resource-group $resourceGroup \
        --query [0].value -o tsv)
    
    echo $blobStorageName
    echo $blobKey
    
  4. Aby wyświetlić konto i klucz dostępu Storage Data Lake Storage Gen2, wprowadź następujące polecenie:

    ADLSGen2StorageName=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.adlsGen2StorageName.value')
    
    adlsKey=$(az storage account keys list \
        --account-name $ADLSGen2StorageName \
        --resource-group $resourceGroup \
        --query [0].value -o tsv)
    
    echo $ADLSGen2StorageName
    echo $adlsKey
    

Tworzenie fabryki danych

Azure Data Factory to narzędzie, które pomaga zautomatyzować Azure Pipelines. Nie jest to jedyny sposób wykonywania tych zadań, ale jest to doskonały sposób automatyzacji procesów. Aby uzyskać więcej informacji na Azure Data Factory, zobacz dokumentację Azure Data Factory .

Ta fabryka danych będzie mieć jeden potok z dwoma działaniami:

  • Pierwsze działanie spowoduje skopiowanie danych z usługi Azure Blob Storage na konto magazynu usługi Data Lake Storage Gen 2 w celu naśladowania pozyskiwania danych.
  • Drugie działanie spowoduje przekształcenie danych w klastrze Spark. Skrypt przekształca dane, usuwając niepożądane kolumny. Dołącza również nową kolumnę, która oblicza przychód generowany przez pojedynczą transakcję.

Aby skonfigurować potok Azure Data Factory, wykonaj poniższe polecenie. Nadal powinien być w hdinsight-sales-insights-etl katalogu.

blobStorageName=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.blobStorageName.value')
ADLSGen2StorageName=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.adlsGen2StorageName.value')

./scripts/adf.sh $resourceGroup $ADLSGen2StorageName $blobStorageName

Ten skrypt powoduje wykonywanie następujących czynności:

  1. Tworzy jednostkę usługi z uprawnieniami do konta magazynu Storage Blob Data Contributor usługi Data Lake Storage Gen2.
  2. Uzyskuje token uwierzytelniania w celu autoryzowania żądań POST do interfejsu API REST systemu plików usługi Data Lake Storage Gen2.
  3. Wypełnia rzeczywistą nazwę konta magazynu usługi Data Lake Storage Gen2 w sparktransform.py plikach query.hql i .
  4. Uzyskuje klucze magazynu dla kont usługi Data Lake Storage Gen2 i usługi Blob Storage.
  5. Tworzy kolejne wdrożenie zasobów w celu utworzenia Azure Data Factory potoku wraz ze skojarzonymi z nim połączonymi usługami i działaniami. Przekazuje klucze magazynu jako parametry do pliku szablonu, dzięki czemu połączone usługi mogą prawidłowo uzyskać dostęp do kont magazynu.

Uruchamianie potoku danych

Wyzwalanie Data Factory działań

Pierwsze działanie w utworzonym potoku Data Factory przenosi dane z usługi Blob Storage do usługi Data Lake Storage Gen2. Drugie działanie stosuje przekształcenia platformy Spark do danych i zapisuje przekształcone pliki .csv do nowej lokalizacji. Ukończenie całego potoku może potrwać kilka minut.

Aby pobrać nazwę Data Factory, wprowadź następujące polecenie:

cat resourcesoutputs_adf.json | jq -r '.properties.outputs.factoryName.value'

Aby wyzwolić potok, możesz:

  • Wyzwalanie potoku Data Factory w programie PowerShell. Zastąp RESOURCEGROUP elementy i odpowiednimi DataFactoryName wartościami, a następnie uruchom następujące polecenia:

    # If you have multiple subscriptions, set the one to use
    # Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
    
    $resourceGroup="RESOURCEGROUP"
    $dataFactory="DataFactoryName"
    
    $pipeline =Invoke-AzDataFactoryV2Pipeline `
        -ResourceGroupName $resourceGroup `
        -DataFactory $dataFactory `
        -PipelineName "IngestAndTransform"
    
    Get-AzDataFactoryV2PipelineRun `
        -ResourceGroupName $resourceGroup  `
        -DataFactoryName $dataFactory `
        -PipelineRunId $pipeline
    

    Wykonaj ponownie w Get-AzDataFactoryV2PipelineRun razie potrzeby, aby monitorować postęp.

    Lub

  • Otwórz fabrykę danych i wybierz pozycję Author Monitor (Autor monitora). IngestAndTransformWyzwolić potok z portalu. Aby uzyskać informacje na temat wyzwalania potoków za pośrednictwem portalu, zobacz Create on-demand Apache Hadoop clusters in HDInsight using Azure Data Factory(Tworzenie klastrów Apache Hadoop na żądanie w umacie HDInsight przy użyciu Azure Data Factory).

Aby sprawdzić, czy potok został uruchomiony, możesz wykonać jedną z następujących czynności:

  • Przejdź do sekcji Monitorowanie w fabryce danych za pośrednictwem portalu.
  • W Eksplorator usługi Azure Storage przejdź do konta magazynu usługi Data Lake Storage Gen2. Przejdź do systemu plików, a następnie przejdź do folderu i sprawdź jego zawartość, filestransformed aby sprawdzić, czy potok zakończył się pomyślnie.

Aby uzyskać inne sposoby przekształcania danych przy użyciu usługi HDInsight, zobacz ten artykuł natemat korzystania z Jupyter Notebook .

Utwórz tabelę w klastrze Interactive Query, aby wyświetlić dane na Power BI

  1. Skopiuj plik query.hql do klastra LLAP przy użyciu narzędzia SCP. Wprowadź polecenie:

    llapClusterName=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.llapClusterName.value')
    scp scripts/query.hql sshuser@$llapClusterName-ssh.azurehdinsight.net:/home/sshuser/
    

    Przypomnienie: domyślne hasło to Thisisapassword1 .

  2. Użyj protokołu SSH, aby uzyskać dostęp do klastra LLAP. Wprowadź polecenie:

    ssh sshuser@$llapClusterName-ssh.azurehdinsight.net
    
  3. Użyj następującego polecenia, aby uruchomić skrypt:

    beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -f query.hql
    

    Ten skrypt utworzy zarządzaną tabelę w klastrze Interactive Query, do których można uzyskać dostęp z Power BI.

Tworzenie pulpitu nawigacyjnego Power BI danych sprzedaży

  1. Otwórz program Power BI Desktop.

  2. Z menu przejdź do pozycji Pobierz daneWięcej...AzureHdInsight Interactive Query.

  3. Wybierz pozycję Połącz.

  4. W oknie dialogowym Interactive Query HDInsight:

    1. W polu tekstowym Serwer wprowadź nazwę klastra LLAP w formacie .
    2. W polu tekstowym bazy danych wprowadź .
    3. Wybierz przycisk OK.
  5. W oknie dialogowym AzureHive:

    1. W polu tekstowym Nazwa użytkownika wprowadź .
    2. W polu tekstowym Hasło wprowadź .
    3. Wybierz pozycję Połącz.
  6. W nawigatorze wybierz pozycję i/lub, aby wyświetlić podgląd sales_raw danych. Po załadowaniu danych możesz poeksperymentować z pulpitem nawigacyjnym, który chcesz utworzyć. Zobacz następujące linki, aby rozpocząć pracę z Power BI nawigacyjnych:

Czyszczenie zasobów

Jeśli nie zamierzasz nadal korzystać z tej aplikacji, usuń wszystkie zasoby za pomocą następującego polecenia, aby nie ponosić za nie opłat.

  1. Aby usunąć grupę zasobów, wprowadź polecenie:

    az group delete -n $resourceGroup
    
  2. Aby usunąć jednostkę usługi, wprowadź polecenia:

    servicePrincipal=$(cat serviceprincipal.json | jq -r '.name')
    az ad sp delete --id $servicePrincipal
    

Następne kroki