Проекту SPYT, обеспечивающему интеграцию Apache Spark с YTsaurus, больше 5 лет. Несколько лет назад мы уже рассказывали о том, как нам удалось их подружить так, чтобы всё работало эффективно (https://highload.ru/spring/2021/abstracts/7266). С тех пор в проекте произошел ряд важных событий, и самое главное из них — выход YTsaurus в Open Source весной 2023 года.
Выход в Open Source принёс в проект ряд новых требований. Во-первых, как и многие другие компании, мы использовали свой форк спарка, в котором сделали ряд модификаций. И при выходе в Open Source нам пришлось включить весь код модифицированного спарка в свой репозиторий (а это больше 2 миллионов строк), хотя в целом изменения там были не очень существенные. Это сильно усложнило как понимание самого кода для сторонних разработчиков, так и процесс его сборки и модификации.
Ещё одним требованием, возникшим после выхода в Open Source, стала одновременная поддержка нескольких версий спарка. И если внутренних пользователей в целом устраивала версия спарка, на которой был основан форк, то внешние пользователи хотели использовать произвольную версию спарка, не ограничиваясь лишь той версией, на базе которой мы сделали свой форк.
Перед нами встала задача: перенести все наши доработки из форка в SPYT и перейти на использование оригинальных дистрибутивов спарка. Другой сопутствующей задачей стал уход от жёсткой привязки к определённой версии спарка и обеспечение возможности работать с произвольной версией таким образом, чтобы сохранился весь функционал и не была нарушена бинарная совместимость между SPYT и спарком.
В своём докладе я расскажу о том, зачем изначально нам потребовалось сделать форк и пропатчить Apache Spark, какие это вносило неудобства, и как мы справились с самыми главными вызовами после выхода проекта в Open Source: отказ от форка Apache Spark и поддержка работы SPYT, используя произвольную версию Apache Spark.