Как выбрать версию Scala для моей программы Spark? - PullRequest
0 голосов
/ 19 декабря 2018

Я создаю свое первое приложение Spark, разрабатываемое с использованием IDEA.

В моем кластере версия Spark - 2.1.0, а версия Scala - 2.11.8.

http://spark.apache.org/downloads.html говорит мне: «Начиная с версии 2.0, Spark по умолчанию собирается с Scala 2.11. Пользователям Scala 2.10 следует загрузить исходный пакет Spark и выполнить сборку с поддержкой Scala 2.10».

Итак, вот мойвопрос: что означает «пользователям Scala 2.10 следует скачать исходный пакет Spark и собрать его с поддержкой Scala 2.10»?Почему бы не использовать версию Scala 2.1.1?

Другой вопрос: какую версию Scala я могу выбрать?

1 Ответ

0 голосов
/ 19 декабря 2018

Сначала несколько слов о «почему».

Причина, по которой этот предмет существует, заключается в том, что версии scala не (вообще говоря) двоично-совместимы, хотя в большинстве случаев исходный код совместим.

Таким образом, вы можете взять Scala 2.10 source и скомпилировать его в версии 2.11.x или 2.10.x.Но 2.10.x скомпилированные двоичные файлы (JAR) не могут быть запущены в среде 2.11.x.

Вы можете узнать больше по теме .

Распределения Spark

Итак, пакет Spark, как вы упомянули, создан для Scala 2.11.х время выполнения.

Это означает, что вы не можете запустить свой JAR-файл Scala 2.10.x на кластерном / Spark-экземпляре, который запускается с помощью spark-сборки, созданного на spark.apache.org.

Что быработа такая:

  • Вы компилируете свой JAR для scala 2.11.x и сохраняете ту же искру
  • Вы перекомпилируете Spark для Scala 2.10 и сохраняете свой JAR как

Каковы ваши варианты

Компилирование собственного JAR-файла для Scala 2.11 вместо 2.10 обычно намного проще, чем компиляция Spark сама по себе (множество зависимостей, чтобы получить право).

ОбычноВаш код Scala построен с использованием sbt, и sbt может указывать на конкретную версию Scala, см., например, этот поток в SO .Необходимо указать:

scalaVersion in ThisBuild := "2.10.0"

Вы также можете использовать sbt для "кросс-сборки" , то есть создавать разные JAR-файлы для разных версий Scala.

crossScalaVersions := Seq("2.11.11", "2.12.2")

Как выбрать версию для Scala

Ну, это "своего рода" мнение.Я бы рекомендовал: выбрать версию Scala, соответствующую вашему производственному кластеру Spark.

Если ваш производственный Spark 2.3 загружен из https://spark.apache.org/downloads.html,, то, как говорится, он использует Scala 2.11, и это то, что выследует использовать тоже.Использование чего-либо еще, на мой взгляд, просто оставляет дверь открытой для различных несовместимостей в будущем.

Придерживайтесь того, что нужно вашему производству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...