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
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
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.
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()
Een query uitvoeren op een CSV-bestand. De onderstaande taal werkt voor
spark-shell
enpyspark
.spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
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")
Resultaten weergeven:
data.show() data.select($"BuildingID", $"Country").show(10)
data.show() data.select("BuildingID", "Country").show(10)
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 spark
om toegang te krijgen tot het SparkSession-exemplaar. Voer in sc
om toegang te krijgen tot het SparkContext-exemplaar.
Belangrijke shellparameters
De Spark Shell-opdracht (spark-shell
of 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
- Zie Inleiding tot Apache Spark in Azure HDInsight voor een overzicht.
- Zie Een Apache Spark-cluster maken in Azure HDInsight om te werken met Spark-clusters en SparkSQL.
- Zie Wat is Apache Spark Structured Streaming? om toepassingen te schrijven die streaminggegevens verwerken met Spark.