Samouczek: tworzenie kompleksowego potoku danych w celu uzyskania szczegółowych informacji o sprzedaży w usłudze Azure HDInsight
W tym samouczku utworzysz kompleksowe potok danych, który wykonuje operacje wyodrębniania, przekształcania i ładowania (ETL). Potok będzie używać klastrów Apache Spark i Apache Hive działających w usłudze Azure HDInsight do wykonywania zapytań i manipulowania danymi. Będziesz również używać technologii, takich jak Azure Data Lake Storage Gen2 do przechowywania danych, i usługi Power BI na potrzeby wizualizacji.
Ten potok danych łączy dane z różnych magazynów, usuwa niechciane dane, dołącza nowe dane i ładuje je z powrotem do magazynu, aby wizualizować szczegółowe informacje biznesowe. Przeczytaj więcej na temat potoków ETL w obszarze Wyodrębnianie, przekształcanie i ładowanie (ETL) na dużą skalę.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wymagania wstępne
Interfejs wiersza polecenia platformy Azure — co najmniej wersja 2.2.0. Zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
jq, procesor JSON wiersza polecenia. Zobacz: .
Jeśli używasz programu PowerShell do wyzwalania potoku usługi Data Factory, potrzebujesz modułu Az.
Power BI Desktop, aby wizualizować szczegółowe informacje biznesowe na końcu tego samouczka.
Tworzenie zasobów
Klonowanie repozytorium za pomocą skryptów i danych
Zaloguj się do subskrypcji platformy Azure. Jeśli planujesz używać usługi Azure Cloud Shell, wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu. W przeciwnym razie wprowadź poniższe polecenie:
az login # If you have multiple subscriptions, set the one to use # az account set --subscription "SUBSCRIPTIONID"
Upewnij się, że jesteś członkiem właściciela roli platformy Azure. Zastąp
user@contoso.com
ciąg 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ędzie można ukończyć tego samouczka.
Pobierz dane i skrypty dla tego samouczka z repozytorium ETL szczegółowych informacji o sprzedaży w usłudze HDInsight. Wprowadź następujące polecenie:
git clone https://github.com/Azure-Samples/hdinsight-sales-insights-etl.git cd hdinsight-sales-insights-etl
Upewnij się
salesdata scripts templates
, że zostały utworzone. Zweryfikuj przy użyciu następującego polecenia:ls
Wdrażanie zasobów platformy Azure wymaganych dla potoku
Dodaj uprawnienia wykonywania dla wszystkich skryptów, wprowadzając:
chmod +x scripts/*.sh
Ustaw zmienną dla grupy zasobów. Zastąp
RESOURCE_GROUP_NAME
ciąg nazwą istniejącej lub nowej grupy zasobów, a następnie wprowadź polecenie:resourceGroup="RESOURCE_GROUP_NAME"
Uruchom skrypt. Zastąp
LOCATION
żądaną wartością, a następnie wprowadź polecenie:./scripts/resources.sh $resourceGroup LOCATION
Jeśli nie masz pewności, który region ma być określony, możesz pobrać listę obsługiwanych regionów subskrypcji za pomocą polecenia az account list-locations .
Polecenie wdroży następujące zasoby:
- Konto usługi Azure Blob Storage. To konto będzie przechowywać dane sprzedaży firmy.
- Konto 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łudze HDInsight i Data Lake Storage Gen2 w integracji usługi Azure HDInsight 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 Data Lake Storage Gen2.
- Klaster Apache Spark. Ten klaster będzie używany do czyszczenia i przekształcania nieprzetworzonych danych.
- Klaster usługi Apache Hive Interactive Query. Ten klaster umożliwia wykonywanie zapytań dotyczących danych sprzedaży i wizualizowanie ich za pomocą usługi 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 ./templates/resourcesparameters_remainder.json
pliku i zmień hasło dla sparksshPassword
parametrów , sparkClusterLoginPassword
, llapClusterLoginPassword
i llapsshPassword
.
Weryfikowanie wdrożenia i zbieranie informacji o zasobach
Jeśli chcesz sprawdzić stan wdrożenia, przejdź do grupy zasobów w Azure Portal. W obszarze Ustawienia wybierz 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.
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
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
Aby wyświetlić konto Data Lake Storage Gen2 i klucz dostępu, 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ć usługę Azure Pipelines. Nie jest to jedyny sposób na wykonanie tych zadań, ale jest to doskonały sposób automatyzacji procesów. Aby uzyskać więcej informacji na temat Azure Data Factory, zobacz dokumentację Azure Data Factory.
Ta fabryka danych będzie miała jeden potok z dwoma działaniami:
- Pierwsze działanie spowoduje skopiowanie danych z usługi Azure Blob Storage do konta magazynu 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 przez usunięcie niechcianych kolumn. Dołącza również nową kolumnę, która oblicza przychód generowany przez jedną transakcję.
Aby skonfigurować potok Azure Data Factory, wykonaj poniższe polecenie. Nadal należy znajdować się 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 wykonuje następujące czynności:
- Tworzy jednostkę usługi z uprawnieniami
Storage Blob Data Contributor
na koncie magazynu Data Lake Storage Gen2. - Uzyskuje token uwierzytelniania, aby autoryzować żądania POST do interfejsu API REST systemu plików Data Lake Storage Gen2.
- Wypełnia rzeczywistą nazwę konta magazynu Data Lake Storage Gen2 w plikach
sparktransform.py
iquery.hql
. - Uzyskuje klucze magazynu dla kont Data Lake Storage Gen2 i usługi Blob Storage.
- Tworzy kolejne wdrożenie zasobów w celu utworzenia potoku Azure Data Factory ze skojarzonymi połączonymi usługami i działaniami. Przekazuje klucze magazynu jako parametry do pliku szablonu, aby połączone usługi mogły prawidłowo uzyskiwać dostęp do kont magazynu.
Uruchamianie potoku danych
Wyzwalanie działań usługi Data Factory
Pierwsze działanie w potoku usługi Data Factory, które zostało utworzone, przenosi dane z usługi Blob Storage do Data Lake Storage Gen2. Drugie działanie stosuje przekształcenia platformy Spark na danych i zapisuje przekształcone pliki .csv w nowej lokalizacji. Ukończenie całego potoku może potrwać kilka minut.
Aby pobrać nazwę usługi Data Factory, wprowadź następujące polecenie:
cat resourcesoutputs_adf.json | jq -r '.properties.outputs.factoryName.value'
Aby wyzwolić potok, możesz wykonać następujące czynności:
Wyzwalanie potoku usługi Data Factory w programie PowerShell. Zastąp
RESOURCEGROUP
ciąg , iDataFactoryName
odpowiednimi 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 & monitor). Wyzwalanie potoku
IngestAndTransform
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 usłudze 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 Gen 2. Przejdź do systemu plików, a następnie przejdź do
files
transformed
folderu i sprawdź jego zawartość, 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ł dotyczący używania Jupyter Notebook.
Tworzenie tabeli w klastrze Interactive Query w celu wyświetlenia danych w usłudze Power BI
Skopiuj plik do klastra
query.hql
LLAP przy użyciu usługi 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
.Użyj protokołu SSH, aby uzyskać dostęp do klastra LLAP. Wprowadź polecenie:
ssh sshuser@$llapClusterName-ssh.azurehdinsight.net
Aby uruchomić skrypt, użyj następującego polecenia:
beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -f query.hql
Ten skrypt utworzy zarządzaną tabelę w klastrze Interactive Query, do którego można uzyskać dostęp z usługi Power BI.
Tworzenie pulpitu nawigacyjnego usługi Power BI na podstawie danych sprzedaży
Otwórz program Power BI Desktop.
Z menu przejdź do pozycji Pobierz dane>Więcej...>Azure>Interactive Query usługi HDInsight.
Wybierz pozycję Połącz.
W oknie dialogowym Interactive Query usługi HDInsight:
- W polu tekstowym Serwer wprowadź nazwę klastra LLAP w formacie
https://LLAPCLUSTERNAME.azurehdinsight.net
. - W polu tekstowym bazy danych wprowadź .
default
- Wybierz przycisk OK.
- W polu tekstowym Serwer wprowadź nazwę klastra LLAP w formacie
W oknie dialogowym AzureHive :
- W polu tekstowym Nazwa użytkownika wprowadź .
admin
- W polu tekstowym Hasło wprowadź wartość
Thisisapassword1
. - Wybierz pozycję Połącz.
- W polu tekstowym Nazwa użytkownika wprowadź .
W nawigatorze wybierz pozycję
sales
i/lubsales_raw
, aby wyświetlić podgląd danych. Po załadowaniu danych możesz eksperymentować z pulpitem nawigacyjnym, który chcesz utworzyć. Aby rozpocząć pracę z pulpitami nawigacyjnymi usługi Power BI, zobacz następujące linki:
- Wprowadzenie do pulpitów nawigacyjnych dla projektantów usługi Power BI
- Samouczek: wprowadzenie do usługi Power BI
Czyszczenie zasobów
Jeśli nie zamierzasz nadal korzystać z tej aplikacji, usuń wszystkie zasoby przy użyciu następującego polecenia, aby nie zostały naliczone opłaty.
Aby usunąć grupę zasobów, wprowadź polecenie:
az group delete -n $resourceGroup
Aby usunąć jednostkę usługi, wprowadź polecenia:
servicePrincipal=$(cat serviceprincipal.json | jq -r '.name') az ad sp delete --id $servicePrincipal