Transformace dat v cloudu pomocí aktivity Sparku v Azure Data Factory

VZTAHUJE SE NA: Azure Data Factory Azure Synapse Analytics

Tip

Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.

V tomto kurzu pomocí portálu Azure vytvoříte kanál Azure Data Factory. Tento kanál transformuje data pomocí aktivity Sparku a propojené služby na vyžádání Azure HDInsight.

V tomto kurzu provedete následující kroky:

  • Vytvoření datové továrny
  • Vytvořte kanál, který používá aktivitu Spark.
  • Spusťte běh pipeline.
  • Sledujte spuštění kanálu.

Pokud nemáte předplatné Azure, vytvořte si účet free než začnete.

Požadavky

Poznámka:

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Pokud chcete začít, přečtěte si téma Install Azure PowerShell. Informace o migraci do modulu Az PowerShell najdete v tématu Migrace Azure PowerShell z AzureRM do Az.

  • Azure účet pro ukládání. Vytvoříte Python skript a vstupní soubor a nahrajete je do Azure Storage. V tomto účtu úložiště se ukládá výstup z programu Sparku. Cluster Spark na vyžádání používá stejný účet úložiště jako primární úložiště.

Poznámka:

HdInsight podporuje jenom účty úložiště pro obecné účely s úrovní Standard. Ujistěte se, že účet úložiště nemá úroveň Premium nebo není určený jenom pro objekty blob.

Nahrání skriptu Python do účtu služby Blob Storage

  1. Vytvořte soubor Python s názvem WordCount_Spark.py s následujícím obsahem:

    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. Nahraďte <storageAccountName> názvem účtu úložiště Azure. Pak soubor uložte.

  3. V Azure Blob Storage vytvořte kontejner s názvem adftutorial pokud neexistuje.

  4. Vytvořte složku s názvem spark.

  5. Ve složce spark vytvořte dílčí složku s názvem script.

  6. Do podsložky script uložte soubor WordCount_Spark.py.

Nahrání vstupního souboru

  1. Vytvořte soubor minecraftstory.txt s nějakým textem. Program Sparku spočítá slova v tomto textu.
  2. Ve složce spark vytvořte dílčí složku s názvem inputfiles.
  3. Nahrajte do dílčí složky inputfiles soubor minecraftstory.txt.

Vytvoření datové továrny

Postupujte podle kroků v článku Quickstart: Vytvořte datovou továrnu pomocí portálu Azure a vytvořte datovou továrnu, pokud ji ještě nemáte k práci.

Vytvoření propojených služeb

V této části vytvoříte tyto dvě propojené služby:

  • Propojená služba Azure Storage, která propojuje Azure storage účet s datovou továrnou. Toto úložiště používá HDInsight cluster na vyžádání. Obsahuje také skript Sparku, který se má spustit.
  • Propojená služba HDInsight na vyžádání. Azure Data Factory automaticky vytvoří cluster HDInsight a spustí program Spark. Pokud je cluster HDInsight po předem konfigurovanou dobu nečinný, odstraní se.

Vytvoření propojené služby Azure Storage

  1. Na domovské stránce přepněte na kartu Spravovat na levém panelu.

    Snímek obrazovky znázorňující kartu Spravovat

  2. Ve spodní části okna vyberte možnost Připojení a potom možnost + Nové.

    Tlačítka pro vytvoření nového připojení

  3. V okně New Linked Service vyberte Data Store>Azure Blob Storage a pak vyberte Continue.

    Výběr dlaždice

  4. V seznamu v poli Název účtu úložiště vyberte název a potom vyberte Uložit.

    Pole pro zadání názvu účtu úložiště

Vytvořte propojenou službu HDInsight na požádání

  1. Znovu vyberte tlačítko + Nová a vytvořte další propojenou službu.

  2. V okně New Linked Service vyberte Compute>Azure HDInsight a pak vyberte Continue.

    Vybrání dlaždice „Azure HDInsight“

  3. V okně Nová propojená služba proveďte následující kroky:

    a. Do pole Název zadejte AzureHDInsightLinkedService.

    b. Ověřte, že je v poli Typ vybraná možnost HDInsight na vyžádání.

    c. Ve propojené službě úložiště Azure vyberte AzureBlobStorage1. Tuto propojenou službu jste vytvořili dříve. Pokud jste použili jiný název, zadejte sem správný název.

    d. V poli Typ clusteru vyberte spark.

    e. V poli ID instančního objektu zadejte ID instančního objektu s oprávněním k vytvoření clusteru HDInsight.

    Tento aplikační objekt musí být členem role přispěvatele v rámci předplatného nebo skupiny prostředků, ve které se cluster vytvoří. Další informace najdete v tématu Vytvoření aplikace Microsoft Entra a služebního objektu. ID instančního objektu je ekvivalentní ID aplikace a klíč instančního objektu je ekvivalentní hodnotě tajného klíče klienta.

    f. Pro klíč Service principal zadejte klíč.

    g. V poli Skupina prostředků vyberte stejnou skupinu prostředků, kterou jste použili při vytváření datové továrny. Cluster Spark je vytvořen v této skupině prostředků.

    h. Rozbalte Typ operačního systému.

    i. Zadejte Jméno uživatele clusteru.

    j. Zadejte Heslo clusteru pro tohoto uživatele.

    k. Vyberte Dokončit.

    Nastavení propojené služby HDInsight

Poznámka:

Azure HDInsight omezuje celkový počet jader, která můžete použít v každé Azure oblasti, kterou podporuje. Pro propojenou službu HDInsight na vyžádání se cluster HDInsight vytvoří ve stejné lokalitě Azure Storage, která slouží jako jeho primární úložiště. Ujistěte se, že máte dostatečné kvóty pro jádra, aby bylo možné cluster úspěšně vytvořit. Další informace najdete v tématu Nastavení clusterů v HDInsight se systémem Hadoop, Spark, Kafka a dalšími.

Vytvořit kanál

  1. Vyberte tlačítko + (plus) a potom v nabídce vyberte Pipeline.

    Tlačítka pro vytvoření nového kanálu

  2. Na panelu nástrojů Aktivity rozbalte HDInsight. Přetáhněte aktivitu Spark z panelu nástrojů Aktivity na plochu návrháře potrubí.

    Přetažení aktivity Spark

  3. Ve vlastnostech v dolní části okna aktivity Spark proveďte následující kroky:

    a. Přepněte na kartu HDI Cluster.

    b. Vyberte službu AzureHDInsightLinkedService, kterou jste vytvořili v předchozím kroku.

    Zadání propojené služby HDInsight

  4. Přepněte na kartu Skripty/Jar a proveďte následující kroky:

    a. Jako službu propojenou s úlohou vyberte AzureBlobStorage1.

    b. Klikněte na Procházet úložiště.

    Zadání skriptu Spark na kartě „Script/Jar”

    c. Přejděte do složky adftutorial/spark/script, vyberte soubor WordCount_Spark.py a potom vyberte Dokončit.

  5. Pokud chcete kanál ověřit, vyberte tlačítko Ověřit na panelu nástrojů. Výběrem tlačítka >> (šipka doprava) zavřete okno ověřování.

  6. Vyberte Publikovat vše. Uživatelské rozhraní služby Data Factory publikuje entity (propojené služby a kanál) do služby Azure Data Factory.

Aktivace spuštění kanálu

Na panelu nástrojů vyberte Přidat aktivační událost a pak vyberte Aktivovat.

Monitorování spuštění kanálu

  1. Přepněte na kartu Monitor. Potvrďte, že vidíte běh pipeline. Vytvoření clusteru Spark trvá přibližně 20 minut.

  2. Pravidelně klikejte na Aktualizovat a kontrolujte stav spuštění pipeline.

    Panel pro monitorování běhů sloupce s tlačítkem 'Obnovit'

  3. Chcete-li zobrazit spuštění aktivit související se spuštěním potrubí, vyberte možnost Zobrazit spuštění aktivit ve sloupci Akce.

    Stav spuštění potrubí

    Výběrem odkazu Všechna spuštění kanálu v horní části můžete přepnout zpět do zobrazení spuštění kanálu.

Ověření výstupu

Ověřte, že se ve složce spark/otuputfiles/wordcount kontejneru adftutorial vytvořil výstupní soubor.

Umístění výstupního souboru

Tento soubor by měl obsahovat všechna slova ze vstupního textového souboru a počet výskytů těchto slov v souboru. Příklad:

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

Datový kanál v této ukázce transformuje data pomocí aktivity Spark a propojené služby HDInsight na vyžádání. Naučili jste se:

  • Vytvoření datové továrny
  • Vytvořte kanál, který používá aktivitu Spark.
  • Spusťte běh pipeline.
  • Sledujte spuštění kanálu.

Pokud chcete zjistit, jak transformovat data spuštěním skriptu Hive v clusteru Azure HDInsight, který je ve virtuální síti, přejděte k dalšímu kurzu: