Tutorial: Laden von Daten und Ausführen von Abfragen auf einem Apache Spark-Cluster in Azure HDInsightTutorial: Load data and run queries on an Apache Spark cluster in Azure HDInsight

In diesem Tutorial erfahren Sie, wie Sie auf der Grundlage einer CSV-Datei einen Dataframe erstellen und interaktive Spark SQL-Abfragen für einen Apache Spark-Cluster in Azure HDInsight ausführen.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 ist ein Dataframe eine verteilte Sammlung von Daten, die in benannten Spalten organisiert sind.In Spark, a dataframe is a distributed collection of data organized into named columns. Dataframe entspricht vom Konzept her einer Tabelle in einer relationalen Datenbank oder einem Datenrahmen in R/Python.Dataframe is conceptually equivalent to a table in a relational database or a data frame in R/Python.

In diesem Tutorial lernen Sie Folgendes:In this tutorial, you learn how to:

  • Erstellen eines Dataframes aus einer CSV-DateiCreate a dataframe from a csv file
  • Ausführen von Abfragen gegen DataframesRun queries on the dataframe

VoraussetzungenPrerequisites

Ein Apache Spark-Cluster unter HDInsight.An Apache Spark cluster on HDInsight. Weitere Informationen finden Sie unter Erstellen eines Apache Spark-Clusters.See Create an Apache Spark cluster.

Erstellen eines Jupyter NotebooksCreate a Jupyter notebook

Jupyter Notebook ist eine interaktive Notebook-Umgebung, die verschiedene Programmiersprachen unterstützt.Jupyter Notebook is an interactive notebook environment that supports various programming languages. Das Notebook ermöglicht Ihnen, mit Ihren Daten zu interagieren, Code mit Markdowntext zu kombinieren und einfache Visualisierungen durchzuführen.The notebook allows you to interact with your data, combine code with markdown text and perform simple visualizations.

  1. Bearbeiten Sie die URL https://SPARKCLUSTER.azurehdinsight.net/jupyter, indem Sie SPARKCLUSTER durch den Namen Ihres Spark-Clusters ersetzen.Edit the URL https://SPARKCLUSTER.azurehdinsight.net/jupyter by replacing SPARKCLUSTER with the name of your Spark cluster. Geben Sie dann die bearbeitete URL in einem Webbrowser ein.Then enter the edited URL in a web browser. Geben Sie die Anmeldeinformationen für den Cluster ein, wenn Sie dazu aufgefordert werden.If prompted, enter the cluster login credentials for the cluster.

  2. Wählen Sie auf der Jupyter-Webseite Neu > PySpark aus, um ein Notebook zu erstellen.From the Jupyter web page, Select New > PySpark to create a notebook.

    Erstellen eines Jupyter Notebooks zum Ausführen einer interaktiven Spark SQL-AbfrageCreate a Jupyter Notebook to run interactive Spark SQL query

    Es wird ein neues Notebook erstellt und geöffnet, das den Namen „Untitled(Untitled.ipynb)“ hat.A new notebook is created and opened with the name Untitled(Untitled.ipynb).

    Hinweis

    Wenn Sie den PySpark-Kernel zum Erstellen eines Notebooks verwenden, wird die spark-Sitzung automatisch für Sie erstellt, wenn Sie die erste Codezelle ausführen.By using the PySpark kernel to create a notebook, the spark session is automatically created for you when you run the first code cell. Die Sitzung muss nicht explizit erstellt werden.You do not need to explicitly create the session.

Erstellen eines Dataframes aus einer CSV-DateiCreate a dataframe from a csv file

Anwendungen können Dataframes direkt auf der Grundlage von Dateien oder Ordnern im Remotespeicher (etwa in Azure Storage oder Azure Data Lake Storage), auf der Grundlage einer Hive-Tabelle oder auf der Grundlage anderer von Spark unterstützter Datenquellen (beispielsweise Cosmos DB, Azure SQL DB, DW und Ähnliches) erstellen. Der folgende Screenshot zeigt eine Momentaufnahme der in diesem Tutorial verwendeten HVAC.csv-Datei.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, etc. The following screenshot shows a snapshot of the HVAC.csv file used in this tutorial. Die CSV-Datei enthält alle HDInsight Spark-Cluster.The csv file comes with all HDInsight Spark clusters. Die Daten erfassen die Temperaturunterschiede in einigen Gebäuden.The data captures the temperature variations of some buildings.

Momentaufnahme der Daten für die interaktive Spark-SQL-AbfrageSnapshot of data for interactive Spark SQL query

  1. Fügen Sie den folgenden Code in eine leere Zelle des Jupyter-Notebooks ein, und drücken Sie UMSCHALT+EINGABE, um den Code auszuführen.Paste the following code in an empty cell of the Jupyter notebook, and then press SHIFT + ENTER to run the code. Mit dem Code werden die Typen importiert, die für dieses Szenario benötigt werden:The code imports the types required for this scenario:

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

    Beim Ausführen einer interaktiven Abfrage in Jupyter wird in der Titelleiste Ihres Webbrowserfensters oder Ihrer Registerkarte neben dem Notebooktitel der Status (Beschäftigt) angezeigt.When running an interactive query in Jupyter, the web browser window or tab caption shows a (Busy) status along with the notebook title. Außerdem sehen Sie in der rechten oberen Ecke einen ausgefüllten Kreis neben dem Text PySpark.You also see a solid circle next to the PySpark text in the top-right corner. Wenn der Auftrag abgeschlossen ist, wird ein Kreis ohne Füllung angezeigt.After the job is completed, it changes to a hollow circle.

    Status der interaktiven Spark SQL-AbfrageStatus of interactive Spark SQL query

  2. Führen Sie den folgenden Code aus, um einen Dataframe und eine temporäre Tabelle (hvac) zu erstellen.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")
    

Ausführen von Abfragen gegen DataframesRun queries on the dataframe

Nach dem Erstellen der Tabelle führen Sie eine interaktive Abfrage für die Daten aus.Once the table is created, you can run an interactive query on the data.

  1. Führen Sie den folgenden Code in einer leeren Zelle des Notebooks aus: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\"
    

    Die folgende Ausgabe in Tabellenform wird angezeigt.The following tabular output is displayed.

    Tabellenausgabe des Ergebnisses der interaktiven Spark-AbfrageTable output of interactive Spark query result

  2. Sie können die Ergebnisse auch in anderen Visualisierungen anzeigen.You can also see the results in other visualizations as well. Wählen Sie zum Anzeigen eines Bereichsdiagramms für die gleiche Ausgabe Bereich aus, und legen Sie die anderen Werte wie gezeigt fest.To see an area graph for the same output, select Area then set other values as shown.

    Bereichsdiagramm des Ergebnisses der interaktiven Spark-AbfrageArea graph of interactive Spark query result

  3. Navigieren Sie auf der Menüleiste des Notebooks zu File (Datei) > Save and Checkpoint (Speichern und Prüfpunkt).From the notebook menu bar, navigate to File > Save and Checkpoint.

  4. Wenn Sie jetzt mit dem nächsten Tutorial fortfahren, lassen Sie das Notebook geöffnet.If you're starting the next tutorial now, leave the notebook open. Fahren Sie andernfalls das Notebook herunter, um die Clusterressourcen freizugeben. Navigieren Sie dazu auf der Menüleiste des Notebooks zu File (Datei) > Close and Halt (Schließen und anhalten) aus.If not, shut down the notebook to release the cluster resources: from the notebook menu bar, navigate to File > Close and Halt.

Bereinigen von RessourcenClean up resources

Bei Verwendung von HDInsight werden Ihre Daten und Jupyter-Notebooks in Azure Storage oder Azure Data Lake Storage gespeichert, sodass Sie einen Cluster problemlos löschen können, wenn er nicht verwendet wird.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 is not in use. Für einen HDInsight-Cluster fallen auch dann Gebühren an, wenn er nicht verwendet wird.You are also charged for an HDInsight cluster, even when it is not in use. Da die Gebühren für den Cluster erheblich höher sind als die Kosten für den Speicher, ist es sinnvoll, nicht verwendete Cluster zu löschen.Since the charges for the cluster are many times more than the charges for storage, it makes economic sense to delete clusters when they are not in use. Wenn Sie vorhaben, sofort mit dem nächsten Tutorial fortzufahren, können Sie den Cluster beibehalten.If you plan to work on the next tutorial immediately, you might want to keep the cluster.

Öffnen Sie den Cluster im Azure-Portal, und wählen Sie Löschen aus.Open the cluster in the Azure portal, and select Delete.

Löschen eines HDInsight-ClustersDelete HDInsight cluster

Sie können auch den Namen der Ressourcengruppe auswählen, um die Seite für die Ressourcengruppe zu öffnen, und dann Ressourcengruppe löschen auswählen.You can also select the resource group name to open the resource group page, and then select Delete resource group. Indem Sie die Ressourcengruppe löschen, löschen Sie sowohl den HDInsight Spark-Cluster als auch das Standardspeicherkonto.By deleting the resource group, you delete both the HDInsight Spark cluster, and the default storage account.

Nächste SchritteNext steps

In diesem Tutorial haben Sie erfahren, wie Sie auf der Grundlage einer CSV-Datei einen Datenrahmen erstellen und interaktive Spark SQL-Abfragen für einen Apache Spark-Cluster in Azure HDInsight ausführen.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. Fahren Sie mit dem nächsten Artikel fort, um zu erfahren, wie die in Apache Spark registrierten Daten in ein BI-Analyse-Tool wie Power BI gezogen werden können.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.