Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Data Processing
  • Начало работы
    • Все руководства
      • Обзор
      • Работа с заданиями Hive
      • Работа с заданиями MapReduce
      • Работа с заданиями PySpark
      • Работа с заданиями Spark
      • Запуск заданий Apache Hive
      • Запуск Spark-приложений
      • Запуск заданий с удаленного хоста
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Перед началом работы
  • Создайте задание Spark
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Работа с заданиями
  3. Работа с заданиями Spark

Работа с заданиями Spark

Статья создана
Yandex Cloud
Обновлена 8 апреля 2025 г.
  • Перед началом работы
  • Создайте задание Spark
  • Удалите созданные ресурсы

Apache Spark — это фреймворк для реализации распределенной обработки неструктурированных и слабоструктурированных данных, входящий в экосистему проектов Hadoop.

В этой статье на простом примере показывается, как в Yandex Data Processing использовать интерфейс Spark для языков Scala и Java. При помощи Spark в приведенном примере подсчитывается число случаев употребления каждого из слов, которые встречаются в коротком образце текста.

Перед началом работыПеред началом работы

  1. Создайте сервисный аккаунт с ролями dataproc.agent и dataproc.provisioner.

  2. В Object Storage создайте бакеты и настройте доступ к ним:

    1. Создайте бакет для исходных данных и предоставьте сервисному аккаунту кластера разрешение READ для этого бакета.
    2. Создайте бакет для результатов обработки и предоставьте сервисному аккаунту кластера разрешение READ и WRITE для этого бакета.
  3. Создайте кластер Yandex Data Processing со следующими настройками:

    • Окружение — PRODUCTION.
    • Сервисы:
      • HDFS
      • SPARK
      • YARN
    • Сервисный аккаунт: выберите созданный ранее сервисный аккаунт.
    • Имя бакета: выберите бакет для результатов обработки.

Создайте задание SparkСоздайте задание Spark

  1. Загрузите файл для обработки:

    1. Скопируйте и сохраните в файле text.txt:

      text.txt
      she sells sea shells on the sea shore
      the shells that she sells are sea shells I am sure
      so if she sells sea shells on the sea shore
      I am sure that the shells are sea shore shells
      
    2. Загрузите файл text.txt в бакет для исходных данных.

  2. Скачайте и загрузите в бакет для исходных данных jar-файл spark-app_2.11-0.1.0-SNAPSHOT.jar, собранный из исходного текста программы анализа word_count.scala на языке Scala:

    word_count.scala
    package com.yandex.cloud.dataproc.scala
    
    import org.apache.spark.{SparkConf, SparkContext}
    
    
    object Main {
        def main(args: Array[String]) {
            if (args.length != 2){ // check number of args
                System.err.println("Usage spark-app.jar <входная_директория> <выходная_директория>");
                System.exit(-1);
            }
    
    
            val inDir = args(0); //input URI
            val outDir = args(1); //output URI
    
            val conf = new SparkConf().setAppName("Word count - Scala App")
            val sc = new SparkContext(conf)
    
            val text_file = sc.textFile(inDir)
            val counts = text_file.flatMap(line => line.split(" "))
            .map(word => (word, 1))
            .reduceByKey(_ + _)
    
            val defaultFS = sc.hadoopConfiguration.get("fs.defaultFS")
    
            if (outDir.toLowerCase().startsWith("s3a://")) {
                counts.saveAsTextFile(outDir)
            } else {
                counts.saveAsTextFile(defaultFS + "/" + outDir)
            }
    
            sc.stop()
        }
    }
    

    Подробнее о том, как собрать приложение для Spark, написанное на языке Scala, см. в разделе Использование Spark Submit.

  3. Создайте задание Spark с параметрами:

    • Основной JAR файл: s3a://<имя_бакета_для_исходных_данных>/spark-app_2.11-0.1.0-SNAPSHOT.jar
    • Основной класс: com.yandex.cloud.dataproc.scala.Main
    • Аргументы:
      • s3a://<имя_бакета_для_исходных_данных>/text.txt
      • s3a://<имя_бакета_для_результатов_обработки>/<папка_для_результатов>
  4. Подождите, пока статус задания изменится на Done.

  5. Скачайте из бакета и просмотрите файлы с результатами обработки:

    part-00000
    (are,2)
    (am,2)
    (she,3)
    (so,1)
    
    part-00001
    (shore,3)
    (if,1)
    (that,2)
    (on,2)
    (shells,6)
    (I,2)
    (sure,2)
    (sea,6)
    (the,4)
    (sells,3)
    

Примечание

Вы можете просматривать логи выполнения заданий и искать в них информацию с помощью сервиса Yandex Cloud Logging. Подробнее см. в разделе Работа с логами.

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

  1. Удалите кластер.
  2. Удалите бакеты.
  3. Удалите сервисный аккаунт.

Была ли статья полезна?

Предыдущая
Работа с заданиями PySpark
Следующая
Запуск заданий Apache Hive
Проект Яндекса
© 2025 ООО «Яндекс.Облако»