Köra Apache Spark från Spark Shell

Ett interaktivt Apache Spark Shell tillhandahåller en REPL-miljö (read-execute-print loop) för att köra Spark-kommandon en i taget och se resultatet. Den här processen är användbar för utveckling och felsökning. Spark tillhandahåller ett gränssnitt för vart och ett av de språk som stöds: Scala, Python och R.

Köra ett Apache Spark-gränssnitt

  1. Använd ssh-kommandot för att ansluta till klustret. Redigera kommandot nedan genom att ersätta CLUSTERNAME med namnet på klustret och ange sedan kommandot:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Spark tillhandahåller gränssnitt för Scala (spark-shell) och Python (pyspark). I SSH-sessionen anger du något av följande kommandon:

    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
    

    Om du tänker använda valfri konfiguration bör du först granska OutOfMemoryError-undantaget för Apache Spark.

  3. Några grundläggande exempelkommandon. Välj relevant språk:

    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. Fråga en CSV-fil. Observera att språket nedan fungerar för spark-shell och pyspark.

    spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
    
  5. Fråga en CSV-fil och lagra resultat i variabeln:

    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. Visa resultat:

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

    :q
    
    exit()
    

SparkSession- och SparkContext-instanser

Som standard instansieras instanser av SparkSession och SparkContext automatiskt åt dig när du kör Spark Shell.

Om du vill komma åt SparkSession-instansen anger du spark. Om du vill komma åt SparkContext-instansen anger du sc.

Viktiga gränssnittsparametrar

Spark Shell-kommandot (spark-shelleller pyspark) stöder många kommandoradsparametrar. Om du vill se en fullständig lista över parametrar startar du Spark Shell med växeln --help. Vissa av dessa parametrar kan bara gälla för spark-submit, som Spark Shell omsluter.

växla beskrivning Exempel
--master MASTER_URL Anger huvud-URL:en. I HDInsight är det här värdet alltid yarn. --master yarn
--jars JAR_LIST Kommaavgränsad lista över lokala jar-filer som ska ingå i klassökvägarna för drivrutin och executor. I HDInsight består den här listan av sökvägar till standardfilsystemet i Azure Storage eller Data Lake Storage. --jars /path/to/examples.jar
--packages MAVEN_COORDS Kommaavgränsad lista över maven-koordinater för jar-filer som ska ingå i klassökvägarna för drivrutin och executor. Söker i den lokala maven-lagringsplatsen, sedan maven central och sedan eventuella ytterligare fjärrlagringsplatser som anges med --repositories. Formatet för koordinaterna är groupId:artifactId:version. --packages "com.microsoft.azure:azure-eventhubs:0.14.0"
--py-files LIST Endast för Python, en kommaavgränsad lista över .zip, .eggeller .py filer som ska läggas till i PYTHONPATH. --pyfiles "samples.py"

Nästa steg