Какие изменения мне нужно сделать, чтобы перенести приложение из Spark 1.5 в Spark 2.1? - PullRequest
0 голосов
/ 31 января 2019

Мне нужно перенести в Spark 2.1 приложение, написанное на Scala 2.10.4 с использованием Spark 1.6.

Приложение обрабатывает текстовые файлы размером около 7 ГБ и содержит несколько преобразований rdd.

Мне сказали попробовать перекомпилировать его с помощью scala 2.11, чего должно быть достаточно, чтобы он работал со Spark 2.1.Это звучит странно для меня, так как я знаю, что в Spark 2 есть некоторые важные изменения, такие как:

  • Введение объекта SparkSession
  • Слияние API-интерфейсов DataSet и DataFrame

Мне удалось перекомпилировать приложение в spark 2 с scala 2.11 с незначительными изменениями из-за регистрации в Kryo Serializer.У меня все еще есть ошибка времени выполнения, которую я пытаюсь устранить, и я пытаюсь выяснить, что будет дальше.

Мой вопрос касается того, какие изменения являются «необходимыми» для того, чтобы приложение работало, как раньше, икакие изменения «рекомендуются» с точки зрения оптимизации производительности (мне нужно сохранить хотя бы тот же уровень производительности), и все, что вы считаете полезным для новичка в spark:).

Заранее спасибо!

1 Ответ

0 голосов
/ 31 января 2019

Я сделал то же самое 1 год назад, вам не нужно много изменений, что приходит мне в голову:

  • , если ваш код загроможден spark/sqlContext, тогда просто распакуйте этопеременная от SparkSession instace в начале вашего кода.
  • df.map переключен на RDD API в Spark 1.6, в Spark 2. + вы остаетесь в DataFrame API (который теперь имеет mapметод).Чтобы получить ту же функциональность, что и раньше, замените df.map на df.rdd.map.То же самое верно для df.foreach и df.mapPartitions и т. Д.
  • unionAll в Spark 1.6 - это всего лишь union в Spark 2. +
  • CSV-библиотека базы данных теперь включена в Spark,
  • Когда вы вставляете в таблицу разделов кустов, столбцы разделов теперь должны быть последними столбцами в схеме, в Spark 1.6 это должен был быть первый столбец

Что выследует учесть (но потребует дополнительной работы):

  • перенести RDD-код в набор данных
  • включить CBO (оптимизатор на основе затрат)
  • collect_list canиспользоваться со структурами, в Spark 1.6 его можно использовать только с примитивами.Это может упростить некоторые вещи
  • API источника данных был улучшен / унифицирован
  • leftanti введено объединение
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...