SPYT в Scala
Требования
SPYT работает с Java 11 и Scala 2.12.
Зависимости
Все зависимости ставятся в SPYT автоматически, поэтому значение для scope
– Provided
. Они будут использоваться только для компиляции и не будут включены в .jar
для запуска.
Все допустимые значения для spytVersion
можно найти здесь под тегами spyt/* или spyt-spark/*.
val sparkVersion = "3.2.2"
val spytVersion = "2.4.2"
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
)
Сборка
Код с примерами собран командой sbt assembly
и выложен в YTsaurus: //home/spark/examples/scala-examples-assembly-0.1.jar
.
Запуск джобов
Перед запуском джобов из примера необходимо запустить кластер SPYT или узнать discovery-path
уже запущенного кластера.
Запуск джобов производится с помощью утилиты spark-submit-yt
.
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)
В случае использования запуска задач с использованием планировщика YTsaurus, для создания SparkSession
нужно воспользоваться стандартными рекомендациями Spark:
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
:
$ 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