Apache Spark 3 и обратная совместимость?

У нас есть несколько работающих приложений Spark, разработанных с использованием Spark 2.4.1 (Scala 2.11.12). Для нескольких наших новых заданий Spark мы рассматриваем возможность использования функций DeltaLake. Для этого нам нужно использовать Spark 2.4.2 (или выше).

Мои вопросы:

  1. Если мы обновим наш кластер Spark до версии 3.0.0, смогут ли наши приложения версии 2.4.1 по-прежнему работать в новом кластере (без перекомпиляции)?
  2. Если нам нужно перекомпилировать наши предыдущие задания Spark с помощью Spark 3, будут ли они совместимы с исходным кодом или им нужна миграция?

person Ashika Umanga Umagiliya    schedule 22.06.2020    source источник
comment
Пожалуйста, перейдите по этой ссылке, специально измените раздел поведения для каждого компонента - spark.apache.org/releases/spark-release-3-0-0.html   -  person Som    schedule 22.06.2020
comment
Spark 3.0.0 — это только Scala 2.12, поэтому вам нужно как минимум перекомпилировать ваши приложения.   -  person Alex Ott    schedule 22.06.2020


Ответы (2)


В Spark 3.0.0 есть некоторые критические изменения, в том числе изменения, несовместимые с исходным кодом, и изменения, несовместимые с двоичными файлами. См. https://spark.apache.org/releases/spark-release-3-0-0.html. Кроме того, между Scala 2.11 и 2.12 есть некоторые изменения, несовместимые с исходным кодом и двоичным кодом, поэтому вам также может потребоваться обновить код из-за изменения версии Scala.

Однако только для Delta Lake 0.7.0 и выше требуется Spark 3.0.0. Если обновление до Spark 3.0.0 требует больших усилий, вы можете использовать Delta Lake 0.6.x или более раннюю версию. Вам просто нужно обновить Spark до версии 2.4.2 или выше в линейке 2.4.x. Они должны быть совместимы с исходным кодом и двоичным кодом.

person zsxwing    schedule 01.07.2020

Вы можете перекрестно компилировать проекты проектов Spark 2.4 со Scala 2.11 и Scala 2.12. JAR-файлы Scala 2.12 обычно должны работать с приложениями Spark 3. Существуют крайние случаи, когда использование JAR Spark 2.4/Scala 2.12 не будет работать должным образом в кластере Spark 3.

Лучше всего выполнить чистую миграцию на Spark 3/Scala 2.12 и перерезать шнур с помощью Spark 2/Scala 2.11.

Обновление может быть большой проблемой, особенно если ваш проект имеет много зависимостей. Например, предположим, что ваш проект зависит от spark-google-spreadsheets, проекта, который не построен на Scala 2.12. С этой зависимостью вы не сможете легко обновить свой проект до Scala 2.12. Вам нужно будет либо скомпилировать spark-google-spreadsheets со Scala 2.12 самостоятельно, либо удалить зависимость. Подробнее о том, как для перехода на Spark 3.

person Powers    schedule 05.12.2020