Dela via


Använda HDInsight Spark-kluster för att analysera data i Data Lake Storage Gen1

I den här artikeln använder du Jupyter Notebook som är tillgängligt med HDInsight Spark-kluster för att köra ett jobb som läser data från ett Data Lake Storage-konto.

Förutsättningar

Förbereda data

Kommentar

Du behöver inte utföra det här steget om du har skapat HDInsight-klustret med Data Lake Storage som standardlagring. Processen för att skapa klustret lägger till exempeldata i det Data Lake Storage-konto som du anger när du skapar klustret. Hoppa till avsnittet Använd HDInsight Spark-kluster med Data Lake Storage.

Om du har skapat ett HDInsight-kluster med Data Lake Storage som ytterligare lagring och Azure Storage Blob som standardlagring bör du först kopiera några exempeldata till Data Lake Storage-kontot. Du kan använda exempeldata från Azure Storage Blob som är associerad med HDInsight-klustret.

  1. Öppna en kommandotolk och navigera till katalogen där AdlCopy är installerat, vanligtvis %HOMEPATH%\Documents\adlcopy.

  2. Kör följande kommando för att kopiera en specifik blob från källcontainern till 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>
    

    Kopiera HVAC.csv exempeldatafil på /HdiSamples/HdiSamples/SensorSampleData/hvac/ till Azure Data Lake Storage-kontot. Kodfragmentet bör se ut så här:

    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==
    

    Varning

    Kontrollera att fil- och sökvägsnamnen använder rätt versaler.

  3. Du uppmanas att ange autentiseringsuppgifterna för Den Azure-prenumeration som du har ditt Data Lake Storage-konto under. Du bör se utdata som liknar följande fragment:

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

    Datafilen (HVAC.csv) kopieras under en mapp /hvac i Data Lake Storage-kontot.

Använda ett HDInsight Spark-kluster med Data Lake Storage Gen1

  1. Från Azure-portalen går du till startsidan och klickar på panelen för ditt Apache Spark-kluster (om du fäster det på startsidan). Du kan också navigera till ditt kluster under Bläddra bland alla>HDInsight-kluster.

  2. Klicka på Snabblänkar på Spark-klusterbladet och sedan på Jupyter NotebookKlusterinstrumentpanel-bladet. Ange administratörsautentiseringsuppgifterna för klustret om du uppmanas att göra det.

    Kommentar

    Du kan också nå Jupyter Notebook för ditt kluster genom att öppna nedanstående URL i webbläsaren. Ersätt CLUSTERNAME med namnet på klustret:

    https://CLUSTERNAME.azurehdinsight.net/jupyter

  3. Skapa en ny anteckningsbok. Klicka på Ny och sedan på PySpark.

    Create a new Jupyter Notebook.

  4. Du behöver inte uttryckligen skapa några kontexter eftersom du har skapat anteckningsboken med hjälp av PySpark-kerneln. Spark- och Hive-kontexterna skapas automatiskt för dig när du kör den första kodcellen. Du kan börja med att importera de typer som krävs för det här scenariot. Det gör du genom att klistra in följande kodfragment i en cell och trycka på SKIFT + RETUR.

    from pyspark.sql.types import *
    

    Varje gång du kör ett jobb i Jupyter kommer fönsterrubriken i din webbläsare att visa statusen (Upptagen) tillsammans med anteckningsbokens titel. Du kan även se en fylld cirkel bredvid PySpark-texten i det övre högra hörnet. När jobbet har slutförts ändras denna till en tom cirkel.

    Status of a Jupyter Notebook job.

  5. Läs in exempeldata i en tillfällig tabell med hjälp av den HVAC.csv fil som du kopierade till Data Lake Storage Gen1-kontot. Du kan komma åt data i Data Lake Storage-kontot med hjälp av följande URL-mönster.

    • Om du har Data Lake Storage Gen1 som standardlagring finns HVAC.csv på sökvägen som liknar följande URL:

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

      Du kan också använda ett förkortat format, till exempel följande:

      adl:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv
      
    • Om du har Data Lake Storage som ytterligare lagring finns HVAC.csv på den plats där du kopierade det, till exempel:

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

      I en tom cell klistrar du in följande kodexempel, ersätter MYDATALAKESTORE med ditt Data Lake Storage-kontonamn och trycker på SKIFT + RETUR. Den här kodexemplet registrerar data i en tillfällig tabell som kallas hvac.

      # 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. Eftersom du använder en PySpark-kernel kan du nu direkt köra en SQL-fråga för den tillfälliga tabellen hvac som du just skapade med den användbara %%sql-funktionen. Mer information om magin %%sql och andra funktioner som är tillgängliga med PySpark-kerneln finns i Kernels available on Jupyter Notebooks with Apache Spark HDInsight clusters (Kernels available on Jupyter Notebooks with Apache Spark HDInsight clusters).

    %%sql
    SELECT buildingID, (targettemp - actualtemp) AS temp_diff, date FROM hvac WHERE date = \"6/1/13\"
    
  7. När jobbet har slutförts visas följande tabellutdata som standard.

    Table output of query result.

    Du kan också visa resultaten i andra visualiseringar. Ett områdesdiagram för samma utdata skulle som exempel se ut enligt nedan.

    Area graph of query result.

  8. När du har kört appen bör du stänga ned anteckningsboken för att frigöra resurser. Du gör det genom att klicka på Stäng och stoppa i anteckningsbokens Fil-meny. Då avslutas anteckningsboken och stängs ned.

Nästa steg