---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/data-processing/spyt/API/spyt-scala.md
  - https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/API/spyt-scala.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/user-guide/data-processing/spyt/API/spyt-scala.md -->
# SPYT в Scala

## Требования { #requirements }

SPYT работает с Java 11 и Scala 2.12.

## Зависимости { #dependencies }

Все зависимости ставятся в SPYT автоматически, поэтому  значение для `scope` – `Provided`. Они будут использоваться только для компиляции и не будут включены в `.jar` для запуска.

Все допустимые значения для `spytVersion` можно найти [здесь](https://github.com/ytsaurus/ytsaurus/tags) под тегами spyt/* или spyt-spark/*. Совместимые версии Apache Spark указаны в [таблице совместимости](https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/overview.md#spyt-compatibility).

```scala

val sparkVersion = "3.5.4"
val spytVersion = "2.10.0"

libraryDependencies ++= Seq(
    // зависимости от Spark
    "org.apache.spark" %% "spark-core" % sparkVersion % Provided,
    "org.apache.spark" %% "spark-sql" % sparkVersion % Provided,
    // библиотека SPYT
    "tech.ytsaurus" %% "spark-yt-data-source" % spytVersion % Provided
)
```

## Сборка { #build }

Код с примерами собран командой `sbt assembly`  и выложен в YTsaurus: `//home/spark/examples/scala-examples-assembly-0.1.jar`.

## Запуск джобов { #start }

Перед запуском джобов из примера необходимо запустить кластер SPYT или узнать `discovery-path` уже запущенного кластера.

Запуск джобов производится с помощью утилиты `spark-submit-yt`.

```bash
spark-submit-yt \
  --proxy ${YT_PROXY} \
  --discovery-path ${SPYT_DISCOVERY_PATH} \
  --deploy-mode cluster \
  --class tech.ytsaurus.spyt.examples.GroupingExample \
  yt:///home/spark/examples/scala-examples-assembly-0.1.jar

```

## Особенности запуска задач напрямую в YTsaurus (с версии 1.76.0) { #submit }

В случае использования [запуска задач с использованием планировщика YTsaurus](https://ytsaurus.tech/docs/ru/user-guide/data-processing/spyt/launch.md#submit), для создания `SparkSession` нужно воспользоваться стандартными рекомендациями Spark:

```scala
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession

object MySparkApplication {

    def main(args: Array[String]): Unit = {
        val conf = new SparkConf()
        val spark = SparkSession.builder.config(conf).getOrCreate()

        try {
            // Application code
        } finally {
            spark.stop()
        }
    }
}
```

В этом случае запуск выполняется при помощи команды `spark-submit`:

```bash
$ spark-submit \
  --master ytsaurus://${YT_PROXY} \
  --deploy-mode cluster \
  --class tech.ytsaurus.spyt.examples.GroupingExample \
  yt:///home/spark/examples/scala-examples-assembly-0.1.jar

```
<!-- endsource: ru/_includes/user-guide/data-processing/spyt/API/spyt-scala.md -->
