Ausführen von Apache Spark aus der Spark-Shell

Eine interaktive Apache Spark-Shell bietet eine REPL-Umgebung (Read-Execute-Print-Loop, „Lesen-Ausführen-Anzeigen“-Schleife), um Spark-Befehle nacheinander auszuführen und die Ergebnisse anzuzeigen. Dieser Vorgang ist nützlich für Entwicklung und Debuggen. Spark bietet für jede unterstützte Sprache eine Shell: Scala, Python und R.

Ausführen einer Apache Spark-Shell

  1. Verwenden Sie einen ssh-Befehl zum Herstellen der Verbindung mit dem Cluster. Bearbeiten Sie den folgenden Befehl, indem Sie CLUSTERNAME durch den Namen Ihres Clusters ersetzen, und geben Sie den Befehl dann ein:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Spark umfasst Shells für Scala (spark-shell) und Python (pyspark). Geben Sie in der SSH-Sitzung einen der folgenden Befehle ein:

    spark-shell
    
    # Optional configurations
    # spark-shell --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4
    
    pyspark
    
    # Optional configurations
    # pyspark --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4
    

    Wenn Sie beabsichtigen, eine optionale Konfiguration zu verwenden, sollten Sie zunächst die Informationen zur OutOfMemoryError-Ausnahme für Apache Spark lesen.

  3. Einige grundlegende Beispielbefehle. Wählen Sie die relevante Sprache aus:

    val textFile = spark.read.textFile("/example/data/fruits.txt")
    textFile.first()
    textFile.filter(line => line.contains("apple")).show()
    
    textFile = spark.read.text("/example/data/fruits.txt")
    textFile.first()
    textFile.filter(textFile.value.contains("apple")).show()
    
  4. Fragen Sie eine CSV-Datei ab. Beachten Sie, dass die nachstehende Sprache für spark-shell und pyspark funktioniert.

    spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
    
  5. Abfragen einer CSV-Datei und Speichern der Ergebnisse in einer Variable:

    var data = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv")
    
    data = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv")
    
  6. Anzeigen der Ergebnisse:

    data.show()
    data.select($"BuildingID", $"Country").show(10)
    
    data.show()
    data.select("BuildingID", "Country").show(10)
    
  7. Beenden

    :q
    
    exit()
    

SparkSession- und SparkContext-Instanzen

Beim Ausführen der Spark-Shell werden standardmäßig automatisch Instanzen von SparkSession und SparkContext für Sie erzeugt.

Um auf die SparkSession-Instanz zuzugreifen, geben Sie spark ein. Um auf die SparkContext-Instanz zuzugreifen, geben Sie sc ein.

Wichtige Shellparameter

Der Spark-Shell-Befehl (spark-shell oder pyspark) unterstützt viele Befehlszeilenparameter. Um eine vollständige Liste der Parameter anzuzeigen, starten Sie die Spark-Shell mit dem Schalter --help. Einige dieser Parameter gelten möglicherweise nur für spark-submit, den die Spark-Shell umschließt.

switch description Beispiel
--master MASTER_URL Gibt die Master-URL an. In HDInsight ist dieser Wert immer yarn. --master yarn
--jars JAR_LIST Durch Trennzeichen getrennte Liste der lokalen JAR-Dateien zum Einschließen der Treiber- und Executorklassenpfade. In HDInsight besteht diese Liste aus Pfaden zum Standarddateisystem in Azure Storage oder Data Lake Storage. --jars /path/to/examples.jar
--packages MAVEN_COORDS Durch Trennzeichen getrennte Liste der Maven-Koordinaten von JAR-Dateien zum Einschließen der Treiber- und Executorklassenpfade. Durchsucht zuerst das lokale, anschließend das zentrale Maven-Repository und dann etwaige zusätzliche Remote-Repositorys, die mit --repositories angegeben werden. Das Format für die Koordinaten ist groupId:artifactId:version. --packages "com.microsoft.azure:azure-eventhubs:0.14.0"
--py-files LIST Nur für Python eine durch Trennzeichen getrennte Liste der im PYTHONPATH zu platzierenden .zip-, .egg- oder .py-Dateien. --pyfiles "samples.py"

Nächste Schritte