Запуск Apache Spark из оболочки Spark

Интерактивная оболочка Apache Spark предоставляет среду REPL (цикл чтения, выполнения и вывода) для поочередного выполнения команд Spark и просмотра результатов. Этот процесс применяется при развертывании и отладке. Spark предоставляет оболочки для каждого из поддерживаемых языков: Scala, Python и R.

Запуск оболочки Apache Spark

  1. С помощью команды ssh command подключитесь к кластеру. Измените приведенную ниже команду, заменив CLUSTERNAME именем своего кластера, а затем введите команду:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Spark предоставляет оболочки для Scala (spark-shell) и Python (pyspark). В сеансе SSH введите одну из следующих команд:

    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
    

    Если вы планируете использовать дополнительные конфигурации, сначала изучите статью Исключение OutOfMemoryError для Apache Spark.

  3. Несколько простых примеров команд. Выберите подходящий язык:

    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. Выполните запрос по CSV-файлу. Обратите внимание, что приведенный ниже код работает для spark-shell и pyspark.

    spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
    
  5. Выполните запрос по CSV-файлу и сохраните результаты в переменной:

    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. Отобразите результаты:

    data.show()
    data.select($"BuildingID", $"Country").show(10)
    
    data.show()
    data.select("BuildingID", "Country").show(10)
    
  7. Выход

    :q
    
    exit()
    

Экземпляры SparkSession и SparkContext

По умолчанию экземпляры SparkSession и SparkContext создаются автоматически при запуске оболочки Spark.

Чтобы получить доступ к экземпляру SparkSession, введите команду spark. А чтобы получить доступ к экземпляру SparkContext, введите команду sc.

Важные параметры оболочки

Команды оболочки Spark (spark-shell или pyspark) поддерживают несколько параметров командной строки. Чтобы просмотреть полный список параметров, запустите оболочку Spark с параметром --help. Некоторые из этих параметров могут применяться только к скрипту spark-submit, для которого создается оболочка Spark.

switch description пример
--master MASTER_URL Позволяет задать основной URL-адрес. В HDInsight всегда используется значение yarn. --master yarn
--jars JAR_LIST Список разделенных запятыми локальных JAR-файлов, которые добавляются в пути к классам драйвера и исполнителя. В HDInsight этот список состоит из путей к файловой системе по умолчанию в службе хранилища Azure или в Data Lake Storage. --jars /path/to/examples.jar
--packages MAVEN_COORDS Список разделенных запятыми координат Maven для JAR-файлов, которые добавляются в пути к классам драйвера и исполнителя. Выполняет поиск локального репозитория Maven, затем центрального репозитория Maven или же любого дополнительного удаленного репозитория, заданного с помощью параметра --repositories. Формат координат: groupId:artifactId:version. --packages "com.microsoft.azure:azure-eventhubs:0.14.0"
--py-files LIST Только для Python — разделенный запятыми список .zipфайлов , .eggили .py для размещения в PYTHONPATH. --pyfiles "samples.py"

Дальнейшие действия