Dela via


Självstudie: Skapa en datapipeline från slutpunkt till slutpunkt för att härleda försäljningsinsikter i Azure HDInsight

I den här handledningen bygger du en datapipeline från början till slut som utför åtgärder för att extrahera, transformera och ladda (ETL) data. Pipelinen använder Apache Spark - och Apache Hive-kluster som körs i Azure HDInsight för att fråga efter och manipulera data. Du använder även tekniker som Azure Data Lake Storage Gen2 för datalagring och Power BI för visualisering.

Den här datapipelinen kombinerar data från olika lager, tar bort oönskade data, lägger till nya data och läser in data i lagringen för att visualisera affärsinsikter. Mer information om ETL-pipelines finns i Extrahera, transformera och ladda in i stor skala.

Skärmbild som visar arkitekturen för att extrahera, transformera och läsa in.

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Förutsättningar

Skapa resurser

Det här avsnittet visar hur du skapar resurser.

Klona lagringsplatsen med skript och data

  1. Logga in på din Azure-prenumeration. Om du planerar att använda Azure Cloud Shell väljer du Prova i det övre högra hörnet i kodblocket. Annars anger du följande kommando:

    az login
    
    # If you have multiple subscriptions, set the one to use
    # az account set --subscription "SUBSCRIPTIONID"
    
  2. Se till att du är medlem i Azure-rollens ägare. Ersätt user@contoso.com med ditt konto och ange sedan kommandot:

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

    Om en post inte returneras, är du inte medlem och kan inte slutföra den här handledningen.

  3. Ladda ned data och skript för den här självstudien från ETL-lagringsplatsen för HDInsight Sales Insights. Ange följande kommando:

    git clone https://github.com/Azure-Samples/hdinsight-sales-insights-etl.git
    cd hdinsight-sales-insights-etl
    
  4. Kontrollera att salesdata scripts templates har skapats. Kontrollera med följande kommando:

    ls
    

Distribuera Azure-resurser som behövs för pipelinen

  1. Lägg till körningsbehörigheter för alla skript genom att ange kommandot:

    chmod +x scripts/*.sh
    
  2. Ange variabler för en resursgrupp. Ersätt RESOURCE_GROUP_NAME med namnet på en befintlig eller ny resursgrupp och ange sedan kommandot:

    RESOURCE_GROUP="RESOURCE_GROUP_NAME"
    
  3. Kör skriptet. Ersätt LOCATION med det värde du vill använda och ange sedan kommandot:

    ./scripts/resources.sh $RESOURCE_GROUP LOCATION
    

    Om du inte är säker på vilken region du vill ange hämtar du en lista över regioner som stöds för din prenumeration med kommandot az account list-locations .

    Kommandot distribuerar följande resurser:

    • Ett Azure Blob Storage-konto. Det här kontot innehåller företagets försäljningsdata.
    • Ett Data Lake Storage Gen2-konto. Det här kontot fungerar som lagringskonto för båda HDInsight-kluster. Läs mer om HDInsight och Data Lake Storage Gen2 i Azure HDInsight-integrering med Data Lake Storage Gen2.
    • En användartilldelad hanterad identitet. Det här kontot ger HDInsight-kluster åtkomst till Data Lake Storage Gen2-kontot.
    • Ett Apache Spark-kluster. Det här klustret används för att rensa och transformera rådata.
    • Ett Apache Hive-interaktivt frågekluster . Du kan använda det här klustret för att fråga efter försäljningsdata och visualisera dem med Power BI.
    • Ett virtuellt Azure-nätverk som stöds av regler för nätverkssäkerhetsgrupper. Med det här virtuella nätverket kan klustren kommunicera och skydda sin kommunikation.

Det kan ta cirka 20 minuter att skapa kluster.

Standardlösenordet för SSH-protokollåtkomst (Secure Shell) till klustren är Thisisapassword1. Om du vill ändra lösenordet går du till ./templates/resourcesparameters_remainder.json filen och ändrar lösenordet för parametrarna sparksshPassword, sparkClusterLoginPassword, llapClusterLoginPasswordoch llapsshPassword .

Verifiera distributionen och samla in resursinformation

  1. Om du vill kontrollera status för distributionen går du till resursgruppen i Azure Portal. Under Inställningar väljer du Distributioner. Välj sedan distributionen. Här kan du se de resurser som har distribuerats och de resurser som fortfarande håller på att distribueras.

  2. Om du vill visa namnen på klustren anger du följande kommando:

    SPARK_CLUSTER_NAME=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.sparkClusterName.value')
    LLAP_CLUSTER_NAME=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.llapClusterName.value')
    
    echo "Spark Cluster" $SPARK_CLUSTER_NAME
    echo "LLAP cluster" $LLAP_CLUSTER_NAME
    
  3. Om du vill visa Azure Storage-kontot och åtkomstnyckeln anger du följande kommando:

    BLOB_STORAGE_NAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.blobStorageName.value')
    
    blobKey=$(az storage account keys list \
        --account-name $BLOB_STORAGE_NAME \
        --resource-group $RESOURCE_GROUP \
        --query [0].value -o tsv)
    
    echo $BLOB_STORAGE_NAME
    echo $BLOB_KEY
    
  4. Om du vill visa Data Lake Storage Gen2-kontot och åtkomstnyckeln anger du följande kommando:

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

Skapa en datafabrik

Azure Data Factory är ett verktyg som hjälper dig att automatisera Azure Pipelines. Det är inte det enda sättet att utföra dessa uppgifter, men det är ett bra sätt att automatisera processerna. Mer information om Data Factory finns i Dokumentationen om Data Factory.

Den här datafabriken har en pipeline med två aktiviteter:

  • Den första aktiviteten kopierar data från Blob Storage till Data Lake Storage Gen 2-lagringskontot för att efterlikna datainmatning.
  • Den andra aktiviteten transformerar data i Spark-klustret. Skriptet transformerar data genom att ta bort oönskade kolumner. Den lägger också till en ny kolumn som beräknar de intäkter som en enskild transaktion genererar.

Kör följande kommando för att konfigurera Data Factory-pipelinen. Du bör fortfarande vara i hdinsight-sales-insights-etl katalogen.

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

./scripts/adf.sh $RESOURCE_GROUP $ADLSGEN2STORAGENAME $BLOB_STORAGE_NAME

Det här skriptet utför följande åtgärder:

  1. Skapar ett tjänstehuvudnamn med Storage Blob Data Contributor behörigheter för Data Lake Storage Gen2-lagringskontot.
  2. Hämtar en autentiseringstoken för att auktorisera POST begäranden till REST-API:et för Data Lake Storage Gen2-filsystemet.
  3. Fyller i det faktiska namnet på Data Lake Storage Gen2-lagringskontot i filerna sparktransform.py, och query.hql.
  4. Hämtar lagringsnycklar för Data Lake Storage Gen2- och Blob Storage-kontona.
  5. Skapar en annan resursdistribution för att skapa en Data Factory-pipeline med tillhörande länkade tjänster och aktiviteter. Den skickar lagringsnycklarna som parametrar till mallfilen så att de länkade tjänsterna kan komma åt lagringskontona korrekt.

Kör datarörledningen

Det här avsnittet visar hur du kör datapipelinen.

Utlösa Data Factory-aktiviteterna

Den första aktiviteten i Data Factory-pipelinen som du skapade flyttar data från Blob Storage till Data Lake Storage Gen2. Den andra aktiviteten tillämpar Spark-transformeringarna på data och sparar de transformerade .csv-filerna på en ny plats. Det kan ta några minuter att slutföra hela pipelinen.

Om du vill hämta Data Factory-namnet anger du följande kommando:

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

För att utlösa pipelinen har du två alternativ. Du kan:

  • Starta Data Factory-pipelinen i PowerShell. Ersätt RESOURCEGROUP och DataFactoryName med lämpliga värden och kör sedan följande kommandon:

    # 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
    

    Kör igen Get-AzDataFactoryV2PipelineRun efter behov för att övervaka förloppet.

    Eller så kan du:

  • Öppna Data Factory och välj Upphov och Övervakning. Utlös pipelinen IngestAndTransform från portalen. Information om hur du utlöser pipelines via portalen finns i Skapa Apache Hadoop-kluster på begäran i HDInsight med hjälp av Azure Data Factory.

Kontrollera att pipelinen har körts genom att utföra något av följande steg:

  • Gå till avsnittet Övervaka i din datafabrik via portalen.
  • I Azure Storage Explorer går du till ditt Data Lake Storage Gen2-lagringskonto. Gå till files filsystemet och gå sedan till transformed mappen. Kontrollera mappinnehållet för att se om processen lyckades.

Andra sätt att transformera data med hjälp av HDInsight finns i den här artikeln om hur du använder Jupyter Notebook.

Skapa en tabell i Interaktiv fråga-klustret för att visa data i Power BI

  1. query.hql Kopiera filen till LLAP-klustret med hjälp av kommandot säker kopia (SCP). Ange kommandot:

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

    Påminnelse: Standardlösenordet är Thisisapassword1.

  2. Använd SSH för att komma åt LLAP-klustret. Ange följande kommando:

    ssh sshuser@$LLAP_CLUSTER_NAME-ssh.azurehdinsight.net
    
  3. Använd följande kommando för att köra skriptet:

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

    Det här skriptet skapar en hanterad tabell i det interaktiva frågeklustret som du kan komma åt från Power BI.

Skapa en Power BI-instrumentpanel från försäljningsdata

  1. Öppna Power BI Desktop.

  2. På menyn går du till Hämta data>Mer...>Azure>HDInsight-Interaktiv fråga.

  3. Välj Anslut.

  4. I dialogrutan HDInsight Interaktiv fråga:

    1. I textrutan Server anger du namnet på ditt LLAP-kluster i formatet https://LLAPCLUSTERNAME.azurehdinsight.net.
    2. Ange standard i textrutan databas.
    3. Välj OK.
  5. I dialogrutan AzureHive:

    1. I textrutan Användarnamn anger du administratör.
    2. I textrutan Lösenord skriver du Thisisapassword1.
    3. Välj Anslut.
  6. I Navigatör väljer du försäljning eller sales_raw för att förhandsgranska data. När data har lästs in kan du experimentera med instrumentpanelen som du vill skapa. Information om hur du kommer igång med Power BI-instrumentpaneler finns i följande artiklar:

Rensa resurser

Om du inte fortsätter att använda det här programmet tar du bort alla resurser så att du inte debiteras för dem.

  1. Om du vill ta bort resursgruppen anger du kommandot:

    az group delete -n $RESOURCE_GROUP
    
  2. Om du vill ta bort tjänstens huvudnamn anger du kommandona:

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

Gå vidare