Delen via


HDInsight Spark-cluster gebruiken om gegevens te analyseren in Data Lake Storage Gen1

In dit artikel gebruikt u Jupyter Notebook die beschikbaar is met HDInsight Spark-clusters om een taak uit te voeren waarmee gegevens uit een Data Lake Storage-account worden gelezen.

Vereisten

De gegevens voorbereiden

Notitie

U hoeft deze stap niet uit te voeren als u het HDInsight-cluster hebt gemaakt met Data Lake Storage als standaardopslag. Tijdens het maken van het cluster worden enkele voorbeeldgegevens toegevoegd aan het Data Lake Storage-account dat u opgeeft tijdens het maken van het cluster. Ga naar de sectie HDInsight Spark-cluster gebruiken met Data Lake Storage.

Als u een HDInsight-cluster met Data Lake Storage hebt gemaakt als extra opslag en Azure Storage Blob als standaardopslag, moet u eerst enkele voorbeeldgegevens naar het Data Lake Storage-account kopiëren. U kunt de voorbeeldgegevens gebruiken uit de Azure Storage-blob die is gekoppeld aan het HDInsight-cluster.

  1. Open een opdrachtprompt en navigeer naar de map waarin AdlCopy is geïnstalleerd, meestal %HOMEPATH%\Documents\adlcopy.

  2. Voer de volgende opdracht uit om een specifieke blob van de broncontainer naar Data Lake Storage te kopiëren:

    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>
    

    Kopieer het HVAC.csv voorbeeldgegevensbestand op /HdiSamples/HdiSamples/SensorSampleData/hvac/ naar het Azure Data Lake Storage-account. Het codefragment moet er als volgt uitzien:

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

    Waarschuwing

    Zorg ervoor dat de bestands- en padnamen het juiste hoofdlettergebruik gebruiken.

  3. U wordt gevraagd de referenties in te voeren voor het Azure-abonnement waaronder u uw Data Lake Storage-account hebt. Het volgende (of een vergelijkbaar) codefragment wordt weergegeven:

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

    Het gegevensbestand (HVAC.csv) wordt gekopieerd onder een map /hvac in het Data Lake Storage-account.

Een HDInsight Spark-cluster gebruiken met Data Lake Storage Gen1

  1. Klik vanuit Azure Portal vanaf het startboard op de tegel voor uw Apache Spark-cluster (als u het hebt vastgemaakt aan het startboard). U kunt ook naar uw cluster navigeren onder Bladeren>HDInsight-clusters.

  2. Klik vanuit de blade Spark-cluster op Snelkoppelingen. Klik vervolgens vanuit het Cluster-dashboard op Jupyter Notebook. Voer de beheerdersreferenties voor het cluster in als u daarom wordt gevraagd.

    Notitie

    Mogelijk bereikt u de Jupyter-notebook voor uw cluster ook door de volgende URL in uw browser te openen. Vervang CLUSTERNAME door de naam van uw cluster.

    https://CLUSTERNAME.azurehdinsight.net/jupyter

  3. Maak een nieuwe notebook. Klik op Nieuw en klik vervolgens op PySpark.

    Create a new Jupyter Notebook.

  4. Omdat u de notebook met behulp van de PySpark-kernel hebt gemaakt, hoeft u niet expliciet contexten te maken. De Spark- en Hive-contexten worden automatisch voor u gemaakt tijdens het uitvoeren van de eerste codecel. Als eerste stap importeert u de typen die voor dit scenario zijn vereist. Plak hiertoe het volgende codefragment in een cel en druk op SHIFT + ENTER.

    from pyspark.sql.types import *
    

    Telkens wanneer u een taak in Jupyter uitvoert, toont de venstertitel van uw webbrowser de status (Bezet) samen met de notebooktitel. Ook ziet u een gevulde cirkel naast de PySpark-tekst in de rechterbovenhoek. Nadat de taak is voltooid, verandert deze in een lege cirkel.

    Status of a Jupyter Notebook job.

  5. Laad voorbeeldgegevens in een tijdelijke tabel met behulp van het HVAC.csv-bestand dat u naar het Data Lake Storage Gen1-account hebt gekopieerd. U hebt toegang tot de gegevens in het Data Lake Storage-account met behulp van het volgende URL-patroon.

    • Als u Data Lake Storage Gen1 als standaardopslag hebt, bevindt HVAC.csv zich op het pad dat vergelijkbaar is met de volgende URL:

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

      U kunt ook een verkorte indeling gebruiken, zoals de volgende:

      adl:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv
      
    • Als u Data Lake Storage als extra opslag hebt, bevindt HVAC.csv zich op de locatie waar u deze hebt gekopieerd, zoals:

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

      Plak in een lege cel het volgende codevoorbeeld, vervang MYDATALAKESTORE door de naam van uw Data Lake Storage-account en druk op Shift+Enter. Dit codevoorbeeld registreert de gegevens in een tijdelijke tabel genaamd 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. Omdat u een PySpark-kernel gebruikt, kunt u nu rechtstreeks een SQL-query uitvoeren op de tijdelijke tabel hvac, die u zojuist hebt gemaakt met behulp van de %%sql-magic. Zie Kernels die beschikbaar zijn op Jupyter Notebooks met Apache Spark HDInsight-clusters voor meer informatie over de %%sql magie en andere magics die beschikbaar zijn met de PySpark-kernel.

    %%sql
    SELECT buildingID, (targettemp - actualtemp) AS temp_diff, date FROM hvac WHERE date = \"6/1/13\"
    
  7. Nadat de taak is voltooid, wordt standaard de volgende uitvoer in tabelvorm weergegeven.

    Table output of query result.

    U kunt de resultaten ook in andere visualisaties bekijken. Zo ziet een gebiedsgrafiek voor dezelfde uitvoer er als volgt uit.

    Area graph of query result.

  8. Wanneer u klaar bent met het uitvoeren van de toepassing, moet u de notebook afsluiten om de resources vrij te geven. Dit doet u door in het menu Bestand in de notebook te klikken op Sluiten en stoppen. Hiermee wordt de notebook afgesloten.

Volgende stappen