Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Förutsättningar
- Azure CLI, minst version 2.2.0. Titta på Installera Azure CLI.
- jq, en JSON-processor på kommandoraden. Besök jq-webbplatsen .
- En medlem i den inbyggda Azure-rollen: Ägare.
- Om du använder PowerShell för att utlösa Azure Data Factory-pipelinen behöver du Az PowerShell-modulen.
- Power BI Desktop för att visualisera affärsinsikter i slutet av den här självstudien.
Skapa resurser
Det här avsnittet visar hur du skapar resurser.
Klona lagringsplatsen med skript och data
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"
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.
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
Kontrollera att
salesdata scripts templates
har skapats. Kontrollera med följande kommando:ls
Distribuera Azure-resurser som behövs för pipelinen
Lägg till körningsbehörigheter för alla skript genom att ange kommandot:
chmod +x scripts/*.sh
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"
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
, llapClusterLoginPassword
och llapsshPassword
.
Verifiera distributionen och samla in resursinformation
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.
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
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
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:
- Skapar ett tjänstehuvudnamn med
Storage Blob Data Contributor
behörigheter för Data Lake Storage Gen2-lagringskontot. - Hämtar en autentiseringstoken för att auktorisera
POST
begäranden till REST-API:et för Data Lake Storage Gen2-filsystemet. - Fyller i det faktiska namnet på Data Lake Storage Gen2-lagringskontot i filerna
sparktransform.py
, ochquery.hql
. - Hämtar lagringsnycklar för Data Lake Storage Gen2- och Blob Storage-kontona.
- 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
ochDataFactoryName
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 tilltransformed
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
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
.Använd SSH för att komma åt LLAP-klustret. Ange följande kommando:
ssh sshuser@$LLAP_CLUSTER_NAME-ssh.azurehdinsight.net
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
Öppna Power BI Desktop.
På menyn går du till Hämta data>Mer...>Azure>HDInsight-Interaktiv fråga.
Välj Anslut.
I dialogrutan HDInsight Interaktiv fråga:
-
I textrutan Server anger du namnet på ditt LLAP-kluster i formatet
https://LLAPCLUSTERNAME.azurehdinsight.net
. - Ange standard i textrutan databas.
- Välj OK.
-
I textrutan Server anger du namnet på ditt LLAP-kluster i formatet
I dialogrutan AzureHive:
- I textrutan Användarnamn anger du administratör.
- I textrutan Lösenord skriver du Thisisapassword1.
- Välj Anslut.
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.
Om du vill ta bort resursgruppen anger du kommandot:
az group delete -n $RESOURCE_GROUP
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