Apache Spark uitvoeren vanuit de Spark Shell

Een interactieve Apache Spark Shell biedt een REPL-omgeving (read-execute-print lus) voor het één voor één uitvoeren van Spark-opdrachten en het bekijken van de resultaten. Dit proces is handig voor ontwikkeling en foutopsporing. Spark biedt één shell voor elk van de ondersteunde talen: Scala, Python en R.

Een Apache Spark Shell uitvoeren

  1. Gebruik de ssh-opdracht om verbinding te maken met uw cluster. Bewerk de onderstaande opdracht door CLUSTERNAME te vervangen door de naam van uw cluster. Voer vervolgens deze opdracht in:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Spark biedt shells voor Scala (spark-shell) en Python (pyspark). Voer in uw SSH-sessie een van de volgende opdrachten in:

    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
    

    Als u van plan bent om een optionele configuratie te gebruiken, controleert u eerst OutOfMemoryError-uitzondering voor Apache Spark.

  3. Enkele eenvoudige voorbeeldopdrachten. Kies de relevante taal:

    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. Een query uitvoeren op een CSV-bestand. De onderstaande taal werkt voor spark-shell en pyspark.

    spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
    
  5. Query's uitvoeren op een CSV-bestand en resultaten opslaan in variabele:

    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. Resultaten weergeven:

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

    :q
    
    exit()
    

SparkSession- en SparkContext-exemplaren

Wanneer u de Spark Shell uitvoert, worden instanties van SparkSession en SparkContext automatisch voor u geïnstantieerd.

Voer in sparkom toegang te krijgen tot het SparkSession-exemplaar. Voer in scom toegang te krijgen tot het SparkContext-exemplaar.

Belangrijke shellparameters

De Spark Shell-opdracht (spark-shellof pyspark) ondersteunt veel opdrachtregelparameters. Als u een volledige lijst met parameters wilt zien, start u de Spark Shell met de switch --help. Sommige van deze parameters zijn mogelijk alleen van toepassing op spark-submit, die door de Spark Shell worden verpakt.

schakelen beschrijving Voorbeeld
--master MASTER_URL Hiermee geeft u de hoofd-URL op. In HDInsight is deze waarde altijd yarn. --master yarn
--jars JAR_LIST Door komma's gescheiden lijst met lokale JAR's die moeten worden opgenomen in de stuurprogramma- en uitvoerprogrammaklassepaden. In HDInsight bestaat deze lijst uit paden naar het standaardbestandssysteem in Azure Storage of Data Lake Storage. --jars /path/to/examples.jar
--packages MAVEN_COORDS Door komma's gescheiden lijst met maven-coördinaten van JAR's die moeten worden opgenomen in het stuurprogramma en de uitvoerderklassepaden. Doorzoekt de lokale Maven-opslagplaats, vervolgens maven central en vervolgens eventuele extra externe opslagplaatsen die zijn opgegeven met --repositories. De indeling voor de coördinaten is groupId:artifactId:version. --packages "com.microsoft.azure:azure-eventhubs:0.14.0"
--py-files LIST Alleen voor Python: een door komma's gescheiden lijst met .zip.egg, of .py bestanden die op het PYTHONPATH moeten worden geplaatst. --pyfiles "samples.py"

Volgende stappen