Gegevens in de cloud transformeren met behulp van een Spark-activiteit in Azure Data Factory

Van toepassing op: Azure Data Factory Azure Synapse Analytics

Tip

Data Factory in Microsoft Fabric is de volgende generatie van Azure Data Factory, met een eenvoudigere architectuur, ingebouwde AI en nieuwe functies. Als u nieuw bent in gegevensintegratie, begint u met Fabric Data Factory. Bestaande ADF-workloads kunnen upgraden naar Fabric om toegang te krijgen tot nieuwe mogelijkheden voor gegevenswetenschap, realtime analyses en rapportage.

In deze zelfstudie gebruikt u de Azure-portal om een Azure Data Factory-pijplijn te maken. Met deze pijplijn worden gegevens getransformeerd met behulp van een Spark-activiteit en een on-demand Azure HDInsight gekoppelde service.

In deze zelfstudie voert u de volgende stappen uit:

  • Een data factory maken.
  • Een pijplijn maken die een Spark-activiteit gebruikt.
  • Een pijplijnuitvoering activeren.
  • Controleer de pijplijnuitvoering.

Als u geen Azure-abonnement hebt, maakt u een vrij account voordat u begint.

Vereisten

Notitie

U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Install Azure PowerShell om aan de slag te gaan. Zie Migrate Azure PowerShell van AzureRM naar Az voor meer informatie over het migreren naar de Az PowerShell-module.

  • Azure-opslagaccount. U maakt een Python script en een invoerbestand en uploadt deze naar Azure Storage. De uitvoer van het Spark-programma wordt opgeslagen in dit opslagaccount. Het Spark-cluster op aanvraag gebruikt hetzelfde opslagaccount als de primaire opslag.

Notitie

HdInsight ondersteunt alleen algemene opslagaccounts met de catogorie Standard. Zorg ervoor dat het account geen premium- of blob-only opslagaccount is.

Het Python-script uploaden naar uw Blob Storage-account

  1. Maak een Python-bestand met de naam WordCount_Spark.py met de volgende inhoud:

    import sys
    from operator import add
    
    from pyspark.sql import SparkSession
    
    def main():
        spark = SparkSession\
            .builder\
            .appName("PythonWordCount")\
            .getOrCreate()
    
        lines = spark.read.text("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/inputfiles/minecraftstory.txt").rdd.map(lambda r: r[0])
        counts = lines.flatMap(lambda x: x.split(' ')) \
            .map(lambda x: (x, 1)) \
            .reduceByKey(add)
        counts.saveAsTextFile("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/outputfiles/wordcount")
    
        spark.stop()
    
    if __name__ == "__main__":
        main()
    
  2. Vervang <storageAccountName> door de naam van uw Azure-opslagaccount. Sla het bestand vervolgens op.

  3. Maak in Azure Blob Storage een container met de naam adftutorial als deze niet bestaat.

  4. Maak een map met de naam spark.

  5. Maak in de map spark een submap met de naam script.

  6. Upload het bestand WordCount_Spark.py naar de submap script.

Invoerbestand uploaden

  1. Maak een bestand met de naam minecraftstory.txt met wat tekst. Het Spark-programma telt het aantal woorden in deze tekst.
  2. Maak in de map spark een submap met de naam inputfiles.
  3. Upload het bestand minecraftstory.txt naar de submap inputfiles.

Een data factory maken

Volg de stappen in het artikel Quickstart: Een gegevensfactory maken met behulp van de Azure-portal om een gegevensfactory te maken als u er nog geen hebt om mee te werken.

Gekoppelde services maken

In deze sectie ontwerpt u twee gekoppelde services:

  • Een Azure Storage gekoppelde service die een Azure storage-account koppelt aan de data factory. Deze opslag wordt gebruikt voor het on-demand HDInsight-cluster. De service bevat ook het Spark-script dat moet worden uitgevoerd.
  • Een gekoppelde HDInsight-service op aanvraag. Azure Data Factory automatisch een HDInsight-cluster maakt en het Spark-programma uitvoert. Het HDInsight-cluster wordt vervolgens verwijderd als het cluster gedurende een vooraf geconfigureerde tijd inactief is geweest.

Een gekoppelde Azure Storage-service maken

  1. Ga op de startpagina naar het tabblad Beheren in het linkerdeelvenster.

    Schermopname van het tabblad Beheren.

  2. Selecteer Verbindingen onder aan het venster en selecteer + Nieuw.

    Knoppen om een nieuwe verbinding te maken

  3. Selecteer in het venster New Linked ServiceData Store>Azure Blob Storage en selecteer Continue.

    Selecteren van

  4. Selecteer bij Naam van opslagaccount de naam in de lijst en selecteer vervolgens Opslaan.

    Vak voor het opgeven van de naam van het opslagaccount

Een gekoppelde HDInsight-service op aanvraag maken

  1. Selecteer nogmaals de knop + Nieuw om een andere gekoppelde service te maken.

  2. Selecteer in het venster Nieuwe gekoppelde serviceCompute>Azure HDInsight en selecteer vervolgens Continue.

    Selecteren van de

  3. Voer in het venster Nieuwe gekoppelde service de volgende stappen uit:

    a. Voer bij NaamAzureHDInsightLinkedService in.

    b. Controleer of On-demand HDInsight is geselecteerd bij Type.

    c. Selecteer voor Azure Storage Gekoppelde ServiceAzureBlobStorage1. U hebt deze gekoppelde service al eerder gemaakt. Als u een andere naam hebt gebruikt, geeft u hier de juiste naam op.

    d. Selecteer spark bij Clustertype.

    e. Voer bij Service-principal-id de id in van de service-principal die gemachtigd is om een HDInsight-cluster te maken.

    Deze service-principal moet lid zijn van de rol Inzender van het abonnement of de resourcegroep waarin het cluster is gemaakt. Voor meer informatie, zie Maak een Microsoft Entra-toepassing en service-principal. De service-principal-id is gelijk aan de toepassings-id en een service-principalsleutel is gelijk aan de waarde voor een clientgeheim.

    f. Voer voor service-principal sleutel de sleutel in.

    g. Selecteer bij Resourcegroep dezelfde resourcegroep die u hebt gebruikt bij het maken van de gegevensfactory. Het Spark-cluster wordt in deze resourcegroep gemaakt.

    h. Vouw OS type uit.

    i. Voer een naam in voor de gebruikersnaam van het cluster.

    j. Voer het clusterwachtwoord voor de gebruiker in.

    k. Selecteer Voltooien.

    HDInsight gekoppelde service-instellingen

Notitie

Azure HDInsight beperkt het totale aantal kernen dat u kunt gebruiken in elke Azure regio die wordt ondersteund. Voor de gekoppelde ON-demand HDInsight-service wordt het HDInsight-cluster gemaakt op dezelfde Azure Storage locatie die wordt gebruikt als primaire opslag. Zorg ervoor dat u voldoende kernenquota hebt om het cluster met succes te creëren. Zie Clusters instellen in HDInsight met Hadoop, Spark, Kafka en meer voor meer informatie.

Een pipeline maken

  1. Selecteer de knop + (plusteken) en selecteer vervolgens Pijplijn in het menu.

    Knoppen voor het maken van een nieuwe pijplijn

  2. Vouw in de werkset ActiviteitenHDInsight uit. Sleep de activiteit Spark vanuit de werkset Activities naar het ontwerpoppervlak voor pijplijnen.

    De Spark-activiteit slepen

  3. Voer de volgende stappen uit in de eigenschappen voor het Spark-activiteitvenster onderaan:

    a. Ga naar het tabblad HDI-cluster.

    b. Selecteer AzureHDInsightLinkedService (gemaakt in de vorige procedure).

    De gekoppelde HDInsight-service opgeven

  4. Ga naar het tabblad Script/Jar en voer de volgende stappen uit:

    a. Selecteer AzureBlobStorage1 bij Taakgekoppelde service.

    b. Selecteer In opslag bladeren.

    Het Spark-script opgeven op het

    c. Ga naar de map adftutorial/spark/script, selecteer WordCount_Spark.py en selecteer Voltooien.

  5. Selecteer op de werkbalk de knop Valideren om de pijplijn te valideren. Klik op de >> (rechts-pijltje) om het validatievenster te sluiten.

  6. Selecteer Alles publiceren. De Data Factory-gebruikersinterface publiceert entiteiten (gekoppelde services en pijplijn) naar de Azure Data Factory-service.

Een pijplijnuitvoering activeren

Selecteer op de werkbalk de optie Trigger toevoegen en selecteer vervolgens Nu activeren.

De pijplijnrun controleren.

  1. Ga naar het tabblad Monitoren. Zorg ervoor dat u een pijplijnuitvoering ziet. Het duurt ongeveer 20 minuten om een Spark-cluster te maken.

  2. Selecteer regelmatig Vernieuwen om de status van de pijplijnuitvoering te controleren.

    Tabblad voor het bewaken van pijplijnruns, met 'Vernieuwen' knop

  3. Selecteer Uitvoering van activiteiten weergeven in de kolom Acties om de uitvoering van activiteiten weer te geven die zijn gekoppeld aan de pijplijnuitvoering.

    Status van de pijplijnrun

    Als u wilt terugkeren naar de vorige weergave, selecteert u de koppeling Alle pijplijnuitvoeringen bovenaan.

De uitvoer controleren

Controleer of het uitvoerbestand is gemaakt in de map spark/outputfiles/wordcount van de container adftutorial.

Locatie van het uitvoerbestand

Het bestand moet elk woord uit het invoertekstbestand bevatten, plus het aantal keren dat het woord in het bestand voorkomt. Voorbeeld:

(u'This', 1)
(u'a', 1)
(u'is', 1)
(u'test', 1)
(u'file', 1)

De pijplijn in dit voorbeeld transformeert gegevens met behulp van een Spark-activiteit en een gekoppelde HDInsight-service op aanvraag. U hebt geleerd hoe u:

  • Een data factory maken.
  • Een pijplijn maken die een Spark-activiteit gebruikt.
  • Een pijplijnuitvoering activeren.
  • Controleer de pijplijnuitvoering.

Als u wilt weten hoe u gegevens transformeert door een Hive-script uit te voeren op een Azure HDInsight-cluster dat zich in een virtueel netwerk bevindt, gaat u verder met de volgende zelfstudie: