После перехода обычных Python UDF на Arrow-сериализацию Spark столкнулся с регрессией на массивах. Причина оказалась в
PyArrow: ⭐️ метод
to_pylist() преобразовывал данные по одному элементу, создавая для каждого временные Scalar, обёртки и срезы.На вложенных массивах этот путь был в 2,5–10 раз медленнее обходного преобразования через pandas. В Apache Arrow 25.0.1 добавили пакетное преобразование без миллионов промежуточных объектов.
Для тебя это повод обновить
PyArrow на executor-узлах, если после обновления Spark замедлились Python UDF со строками и массивами.#apachespark #apachearrow #pyarrow #python #dataengineering #performance
@data_engi