Zelfstudie: Gegevens laden en query's uitvoeren in een Apache Spark-cluster in Azure HDInsightTutorial: Load data and run queries on an 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 this tutorial, you learn how to create a dataframe from a csv file, and how to run interactive Spark SQL queries against an Apache Spark cluster in Azure HDInsight. In Spark is een gegevensframe een gedistribueerde verzameling gegevens die zijn geordend in benoemde kolommen.In Spark, a dataframe is a distributed collection of data organized into named columns. Er ligt hetzelfde concept aan ten grondslag als aan een tabel in een relationele database of aan een gegevensframe in R/Python.Dataframe is conceptually equivalent to a table in a relational database or a data frame in R/Python.

In deze zelfstudie leert u het volgende:In this tutorial, you learn how to:

  • Een gegevensframe maken van een CSV-bestandCreate a dataframe from a csv file
  • Query's uitvoeren op het gegevensframeRun queries on the dataframe

VereistenPrerequisites

Een Apache Spark-cluster in HDInsight.An Apache Spark cluster on HDInsight. Zie een Apache Spark-cluster maken.See Create an Apache Spark cluster.

Een Jupyter-notebook makenCreate a Jupyter notebook

Jupyter Notebook is een interactieve notitieblokomgeving die ondersteuning biedt voor verschillende programmeertalen.Jupyter Notebook is an interactive notebook environment that supports various programming languages. Via het notitieblok kunt u interactie hebben met uw gegevens, code combineren met markdown-tekst en eenvoudige visualisaties uitvoeren.The notebook allows you to interact with your data, combine code with markdown text and perform simple visualizations.

  1. Bewerk de URL https://SPARKCLUSTER.azurehdinsight.net/jupyter door SPARKCLUSTER te vervangen door de naam van uw Spark-cluster.Edit the URL https://SPARKCLUSTER.azurehdinsight.net/jupyter by replacing SPARKCLUSTER with the name of your Spark cluster. Voer vervolgens de bewerkte URL in een webbrowser in.Then enter the edited URL in a web browser. Voer de aanmeldingsreferenties voor het cluster in als u daarom wordt gevraagd.If prompted, enter the cluster login credentials for the cluster.

  2. Selecteer op de webpagina Jupyter nieuwe > PySpark om een notitie blok te maken.From the Jupyter web page, Select New > PySpark to create a notebook.

    Een Jupyter Notebook maken om de interactieve Spark SQL-query uit te voerenCreate a Jupyter Notebook to run interactive Spark SQL query

    Er wordt een nieuw notitie blok gemaakt en geopend met de naam Naamloos (Untitled.ipynb).A new notebook is created and opened with the name Untitled(Untitled.ipynb).

    Notitie

    Door de PySpark-kernel te gebruiken voor het maken van een notebook, wordt de spark-sessie automatisch voor u gemaakt wanneer u de eerste cel met code uitvoert.By using the PySpark kernel to create a notebook, the spark session is automatically created for you when you run the first code cell. U hoeft de sessie dus niet expliciet te maken.You do not need to explicitly create the session.

Een gegevensframe maken van een CSV-bestandCreate a dataframe from a csv file

Toepassingen kunnen dataframes rechtstreeks maken op basis van bestanden of mappen in de externe opslag, zoals Azure Storage of Azure Data Lake Storage; uit een Hive-tabel; of van andere gegevens bronnen die door Spark worden ondersteund, zoals Cosmos DB, Azure SQL DB, DW, enzovoort.Applications can create dataframes directly from files or folders on the remote storage such as Azure Storage or Azure Data Lake Storage; from a Hive table; or from other data sources supported by Spark, such as Cosmos DB, Azure SQL DB, DW, and so on. In de volgende schermafbeelding ziet u een momentopname van het bestand HVAC.csv dat wordt gebruikt in deze zelfstudie.The following screenshot shows a snapshot of the HVAC.csv file used in this tutorial. Het CSV-bestand wordt geleverd met alle HDInsight Spark-clusters.The csv file comes with all HDInsight Spark clusters. De gegevens hebben betrekking op de schommelingen in temperatuur van sommige gebouwen.The data captures the temperature variations of some buildings.

Moment opname van gegevens voor de interactieve Spark SQL-querySnapshot of data for interactive Spark SQL query

  1. Plak de volgende code in een lege cel van het Jupyter-notitie blok en druk op SHIFT + ENTER om de code uit te voeren.Paste the following code in an empty cell of the Jupyter notebook, and then press SHIFT + ENTER to run the code. Met de code importeert u de typen die voor dit scenario zijn vereist:The code imports the types required for this scenario:

    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.When running an interactive query in Jupyter, the web browser window or tab caption shows a (Busy) status along with the notebook title. Ook ziet u een gevulde cirkel naast de PySpark-tekst in de rechterbovenhoek.You also see a solid circle next to the PySpark text in the top-right corner. Wanneer de taak is voltooid, verandert deze in een lege cirkel.After the job is completed, it changes to a hollow circle.

    Status van interactieve Spark SQL-queryStatus of interactive Spark SQL query

  2. Voer de volgende code uit om een gegevensframe en een tijdelijke tabel (hvac) te maken.Run the following code to create a dataframe and a temporary table (hvac) by running the following code.

    # 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 gegevensframeRun queries on the dataframe

Zodra de tabel is gemaakt, kunt u een interactieve query uitvoeren op de gegevens.Once the table is created, you can run an interactive query on the data.

  1. Voer de volgende code uit in een lege cel van de notebook:Run the following code in an empty cell of the notebook:

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

    De uitvoer wordt weergegeven in een tabel.The following tabular output is displayed.

    Tabel uitvoer van resultaat van interactieve Spark-queryTable output of interactive Spark query result

  2. U kunt de resultaten ook in andere visualisaties bekijken.You can also see the results in other visualizations as well. Als u een vlakdiagram wilt zien voor dezelfde uitvoer, selecteert u Area en stelt u de andere waarden in zoals deze worden weergegeven.To see an area graph for the same output, select Area then set other values as shown.

    Gebieds grafiek van resultaat van interactieve Spark-queryArea graph of interactive Spark query result

  3. Navigeer in de menu balk van de notitie blok naar bestand > opslaan en controle punt.From the notebook menu bar, navigate to File > Save and Checkpoint.

  4. Als u direct verdergaat met de volgende zelfstudie, laat u het notebook open.If you're starting the next tutorial now, leave the notebook open. Als dat niet het geval is, sluit u het notitie blok om de cluster bronnen vrij te geven: Navigeer in de menu balk van het notitie blok naar bestand > sluiten en stoppen.If not, shut down the notebook to release the cluster resources: from the notebook menu bar, navigate to File > Close and Halt.

Resources opschonenClean up resources

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 deze niet in gebruik is.With HDInsight, your data and Jupyter notebooks are stored in Azure Storage or Azure Data Lake Storage, so you can safely delete a cluster when it isn't in use. U betaalt ook voor een HDInsight-cluster, zelfs wanneer het niet in gebruik is.You're also charged for an HDInsight cluster, even when it's not in use. Omdat de kosten voor het cluster veel keren meer zijn dan de kosten voor opslag, is het economisch zinvol om clusters te verwijderen wanneer ze niet worden gebruikt.Since the charges for the cluster are many times more than the charges for storage, it makes economic sense to delete clusters when they aren't in use. Als u direct verder wilt met de zelfstudie, is het beter om het cluster te behouden.If you plan to work on the next tutorial immediately, you might want to keep the cluster.

Open het cluster in Azure Portal en selecteer Verwijderen.Open the cluster in the Azure portal, and select Delete.

HDInsight-cluster verwijderenDelete HDInsight cluster

U kunt ook de naam van de resourcegroep selecteren om de pagina van de resourcegroep te openen en vervolgens Resourcegroep verwijderen selecteren.You can also select the resource group name to open the resource group page, and then select Delete resource group. Als u de resourcegroep verwijdert, verwijdert u zowel het HDInsight Spark-cluster als het standaardopslagaccount.By deleting the resource group, you delete both the HDInsight Spark cluster, and the default storage account.

Volgende stappenNext steps

In deze zelf studie hebt u geleerd hoe u een data frame maakt op basis van een CSV-bestand en hoe u interactieve Spark SQL-query's uitvoert op een Apache Spark cluster in azure HDInsight.In this tutorial, you learned how to create a dataframe from a csv file, and how to run interactive Spark SQL queries against an 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.Advance to the next article to see how the data you registered in Apache Spark can be pulled into a BI analytics tool such as Power BI.