Zelfstudie: Gegevens laden en query's uitvoeren in een Apache Spark-cluster in Azure HDInsight

In deze zelfstudie leert u hoe u een gegevensframe maakt van een CSV-bestand en hoe u interactieve Spark SQL-query's uitvoert op een Apache Spark-cluster in Azure HDInsight. In Spark is een gegevensframe een gedistribueerde verzameling gegevens die zijn geordend in benoemde kolommen. Er ligt hetzelfde concept aan ten grondslag als aan een tabel in een relationele database of aan een gegevensframe in R/Python.

In deze zelfstudie leert u het volgende:

  • Een gegevensframe maken van een CSV-bestand
  • Query's uitvoeren op het gegevensframe

Vereisten

Een Apache Spark-cluster in HDInsight. Zie Een Apache Spark-cluster maken.

Een Jupyter Notebook maken

Jupyter Notebook is een interactieve notitieblokomgeving die ondersteuning biedt voor verschillende programmeertalen. Via het notitieblok kunt u interactie hebben met uw gegevens, code combineren met markdown-tekst en eenvoudige visualisaties uitvoeren.

  1. Bewerk URL https://SPARKCLUSTER.azurehdinsight.net/jupyter door SPARKCLUSTER te vervangen door de naam van uw Spark-cluster. Voer vervolgens de bewerkte URL in een webbrowser in. Voer de aanmeldingsreferenties voor het cluster in als u daarom wordt gevraagd.

  2. Selecteer op de Jupyter-webpagina voor de Spark 2.4-clusters Nieuwe>PySpark om een notebook te maken. Voor de release van Spark 3.1 selecteert u in plaats daarvan New>PySpark3 om een notebook te maken omdat de PySpark-kernel niet meer beschikbaar is in Spark 3.1.

    Create a Jupyter Notebook to run interactive Spark SQL query.

    Er wordt een nieuwe notebook gemaakt met de naam Untitled(Untitled.ipynb) en vervolgens geopend.

    Notitie

    Door de PySpark- of pySpark3-kernel te gebruiken om een notebook te maken, wordt de spark sessie automatisch voor u gemaakt wanneer u de eerste codecel uitvoert. U hoeft de sessie dus niet expliciet te maken.

Een gegevensframe maken van een CSV-bestand

Toepassingen kunnen rechtstreeks vanuit bestanden of mappen op de externe opslag gegevensframes maken, zoals Azure Storage of Azure Data Lake Storage; uit een Hive-tabel; of uit andere gegevensbronnen die worden ondersteund door Spark, zoals Azure Cosmos DB, Azure SQL DB, DW, enzovoort. In de volgende schermafbeelding ziet u een momentopname van het bestand HVAC.csv dat wordt gebruikt in deze zelfstudie. Het CSV-bestand wordt geleverd met alle HDInsight Spark-clusters. De gegevens hebben betrekking op de schommelingen in temperatuur van sommige gebouwen.

Snapshot of data for interactive Spark SQL query.

  1. Plak de volgende code in een lege cel van het Jupyter-notebook en druk op Shift + Enter om de code uit te voeren. Met de code importeert u de typen die voor dit scenario zijn vereist:

    from pyspark.sql import *
    from pyspark.sql.types import *
    

    Wanneer u een interactieve query uitvoert in Jupyter, ziet u in het venster van de webbrowser of de titelbalk van het tabblad de status (Busy), samen met de titel van het notebook. Ook ziet u een gevulde cirkel naast de PySpark-tekst in de rechterbovenhoek. Wanneer de taak is voltooid, verandert deze in een lege cirkel.

    Status of interactive Spark SQL query.

  2. Noteer de sessie-id die wordt geretourneerd. In de bovenstaande afbeelding is de sessie-id 0. Desgewenst kunt u de details van de sessie ophalen door naar https://CLUSTERNAME.azurehdinsight.net/livy/sessions/ID/statements te gaan, waarbij CLUSTERNAME de naam van uw Spark-cluster is en id uw sessie-id-nummer.

  3. Voer de volgende code uit om een gegevensframe en een tijdelijke tabel (hvac) te maken.

    # Create a dataframe and table from sample data
    csvFile = spark.read.csv('/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv', header=True, inferSchema=True)
    csvFile.write.saveAsTable("hvac")
    

Query's uitvoeren op het gegevensframe

Zodra de tabel is gemaakt, kunt u een interactieve query uitvoeren op de gegevens.

  1. Voer de volgende code uit in een lege cel van de notebook:

    %%sql
    SELECT buildingID, (targettemp - actualtemp) AS temp_diff, date FROM hvac WHERE date = \"6/1/13\"
    

    De uitvoer wordt weergegeven in een tabel.

    Table output of interactive Spark query result.

  2. U kunt de resultaten ook in andere visualisaties bekijken. Als u een vlakdiagram wilt zien voor dezelfde uitvoer, selecteert u Area en stelt u de andere waarden in zoals deze worden weergegeven.

    Area graph of interactive Spark query result.

  3. Ga vanaf de menubalk van de notebook naar File>Save and Checkpoint.

  4. Als u direct verdergaat met de volgende zelfstudie, laat u het notebook open. Anders sluit u het notebook om de clusterresources vrij te geven. Ga hiervoor in de menubalk naar File>Close and Halt.

Resources opschonen

Met HDInsight worden uw gegevens en Jupyter-notebooks opgeslagen in Azure Storage of Azure Data Lake Storage, zodat u een cluster veilig kunt verwijderen wanneer dit niet wordt gebruikt. Voor een HDInsight-cluster worden ook kosten in rekening gebracht, zelfs wanneer het niet wordt gebruikt. Aangezien de kosten voor het cluster vaak zoveel hoger zijn dan de kosten voor opslag, is het financieel gezien logischer clusters te verwijderen wanneer ze niet worden gebruikt. Als u direct verder wilt met de zelfstudie, is het beter om het cluster te behouden.

Open het cluster in Azure Portal en selecteer Verwijderen.

Delete HDInsight cluster.

U kunt ook de naam van de resourcegroep selecteren om de pagina van de resourcegroep te openen en vervolgens Resourcegroep verwijderen selecteren. Als u de resourcegroep verwijdert, verwijdert u zowel het HDInsight Spark-cluster als het standaardopslagaccount.

Volgende stappen

In deze zelfstudie hebt u geleerd een gegevensframe te maken van een CSV-bestand en interactieve Spark SQL-query's uit te voeren op een Apache Spark-cluster in Azure HDInsight. Ga naar het volgende artikel om te zien hoe de gegevens die u hebt geregistreerd in Apache Spark kunnen worden overgebracht naar een BI-hulpprogramma voor analyse zoals Power BI.