Použití clusteru HDInsight Spark k analýze dat v Data Lake Storage Gen1

V tomto článku použijete poznámkový blok Jupyter dostupný s clustery HDInsight Spark ke spuštění úlohy, která čte data z účtu Data Lake Storage.

Požadavky

Příprava dat

Poznámka:

Tento krok nemusíte provádět, pokud jste vytvořili cluster HDInsight se službou Data Lake Storage jako výchozím úložištěm. Proces vytváření clusteru přidá do účtu Data Lake Storage nějaká ukázková data, která zadáte při vytváření clusteru. Přejděte do části Použití clusteru HDInsight Spark se službou Data Lake Storage.

Pokud jste vytvořili cluster HDInsight se službou Data Lake Storage jako další úložiště a objekt blob služby Azure Storage jako výchozí úložiště, měli byste nejprve zkopírovat ukázková data do účtu Data Lake Storage. Ukázková data můžete použít z objektu blob služby Azure Storage přidruženého ke clusteru HDInsight.

  1. Otevřete příkazový řádek a přejděte do adresáře, ve kterém je nainstalována AdlCopy, obvykle %HOMEPATH%\Documents\adlcopy.

  2. Spuštěním následujícího příkazu zkopírujte konkrétní objekt blob ze zdrojového kontejneru do Data Lake Storage:

    AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/<blob name> /dest swebhdfs://<dest_adls_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container>
    

    Zkopírujte ukázkový datový soubor HVAC.csv v umístění /HdiSamples/HdiSamples/SensorSampleData/hvac/ do účtu Azure Data Lake Storage. Fragment kódu by měl vypadat takto:

    AdlCopy /Source https://mydatastore.blob.core.windows.net/mysparkcluster/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv /dest swebhdfs://mydatalakestore.azuredatalakestore.net/hvac/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ==
    

    Upozorňující

    Ujistěte se, že názvy souborů a cest používají správné velká písmena.

  3. Zobrazí se výzva k zadání přihlašovacích údajů pro předplatné Azure, ve kterém máte účet Data Lake Storage. Zobrazí se výstup, který bude podobný následujícímu fragmentu kódu:

    Initializing Copy.
    Copy Started.
    100% data copied.
    Copy Completed. 1 file copied.
    

    Datový soubor (HVAC.csv) se zkopíruje do složky /hvac v účtu Data Lake Storage.

Použití clusteru HDInsight Spark se službou Data Lake Storage Gen1

  1. Na webu Azure Portal klikněte na dlaždici clusteru Apache Spark (pokud jste ji připnuli na úvodní panel). Můžete také přejít na cluster pod položkou Procházet vše>Clustery HDInsight.

  2. Z okna clusteru Spark klikněte na tlačítko Rychlé odkazy a pak z okna Řídicí panel clusteru klikněte na tlačítko Poznámkový blok Jupyter. Po vyzvání zadejte přihlašovací údaje správce clusteru.

    Poznámka:

    Může také otevřít poznámkový blok Jupyter pro váš cluster tak, že otevřete následující adresu URL v prohlížeči. Nahraďte CLUSTERNAME názvem clusteru:

    https://CLUSTERNAME.azurehdinsight.net/jupyter

  3. Vytvořte nový poznámkový blok. Klikněte na tlačítko Nový a pak klikněte na tlačítko PySpark.

    Create a new Jupyter Notebook.

  4. Vzhledem k tomu, že jste poznámkový blok vytvořili pomocí jádra PySpark, není nutné explicitně tvořit kontexty. Kontexty Spark a Hive se automaticky vytvoří za vás při spuštění první buňky kódu. Můžete začít importem typů nezbytných pro tento scénář. Chcete-li tak učinit, vložte následující fragment kódu do buňky a stiskněte klávesu SHIFT + ENTER.

    from pyspark.sql.types import *
    

    Při každém spuštění úlohy v Jupyter se název okna webového prohlížeče zobrazí jako (Zaneprázdněn) společně s názvem poznámkového bloku. Zobrazí se také plný kroužek vedle textu PySpark v pravém horním rohu. Po dokončení úlohy se změní na prázdný kruh.

    Status of a Jupyter Notebook job.

  5. Načtěte ukázková data do dočasné tabulky pomocí souboru HVAC.csv , který jste zkopírovali do účtu Data Lake Storage Gen1. K datům v účtu Data Lake Storage můžete přistupovat pomocí následujícího vzoru adresy URL.

    • Pokud jako výchozí úložiště máte Data Lake Storage Gen1, HVAC.csv bude na cestě podobné následující adrese URL:

      adl://<data_lake_store_name>.azuredatalakestore.net/<cluster_root>/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv
      

      Nebo můžete použít zkrácený formát, například následující:

      adl:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv
      
    • Pokud máte službu Data Lake Storage jako další úložiště, HVAC.csv bude v umístění, kam jste ho zkopírovali, například:

      adl://<data_lake_store_name>.azuredatalakestore.net/<path_to_file>
      

      Do prázdné buňky vložte následující příklad kódu, nahraďte MYDATALAKESTORE názvem účtu Data Lake Storage a stiskněte SHIFT+ENTER. Tento ukázkový kód registruje data do dočasné tabulky nazývané TVK.

      # Load the data. The path below assumes Data Lake Storage is   default storage for the Spark cluster
      hvacText = sc.textFile("adl://MYDATALAKESTORazuredatalakestore.  net/cluster/mysparkclusteHdiSamples/HdiSamples/  SensorSampleData/hvac/HVAC.csv")
      
      # Create the schema
      hvacSchema = StructType([StructField("date", StringTy(), False)  ,StructField("time", StringType(), FalseStructField  ("targettemp", IntegerType(), FalseStructField("actualtemp",   IntegerType(), FalseStructField("buildingID", StringType(),   False)])
      
      # Parse the data in hvacText
      hvac = hvacText.map(lambda s: s.split(",")).filt(lambda s: s  [0] != "Date").map(lambda s:(str(s[0]), s(s[1]), int(s[2]), int  (s[3]), str(s[6]) ))
      
      # Create a data frame
      hvacdf = sqlContext.createDataFrame(hvac,hvacSchema)
      
      # Register the data fram as a table to run queries against
      hvacdf.registerTempTable("hvac")
      
  6. Vzhledem k tomu, že používáte jádro PySpark, můžete nyní přímo spustit dotaz SQL na dočasnou tabulku TVK, kterou jste právě vytvořili pomocí %%sql magic. Další informace o %%sql magii a dalších magických prostředích dostupných s jádrem PySpark najdete v tématech Jádra dostupná v poznámkových blocích Jupyter s clustery Apache Spark HDInsight.

    %%sql
    SELECT buildingID, (targettemp - actualtemp) AS temp_diff, date FROM hvac WHERE date = \"6/1/13\"
    
  7. Po úspěšném dokončení úlohy se ve výchozím nastavení zobrazí následující tabulkový výstup.

    Table output of query result.

    Výsledky můžete také zobrazit v dalších vizualizacích. Například plošný graf pro stejný výstup bude vypadat následovně.

    Area graph of query result.

  8. Po dokončení spuštění aplikace byste měli poznámkový blok vypnout a uvolnit tak prostředky. To provedete kliknutím na položku Zavřít a zastavit z nabídky Soubor v poznámkovém bloku. Dojde k vypnutí a zavření poznámkového bloku.

Další kroky