scala spark: Foldleft медленно оценивает трансформации? - PullRequest
1 голос
/ 06 марта 2020

Я что-то заметил и хотел получить объяснение (или хотя бы подтверждение).

В моей компании есть общая схема, согласно которой для того, чтобы что-то сделать со всеми столбцами DataFrame, мы делаем

colList.foldleft(df)({case(df_, colName) => df_.withColumn...})

В общем, это работает, но я обнаружил, что в некоторых случаях он очень медленный, если работать на DataFrame с кучей столбцов и сложным восходящим потоком. Что интересно, это медленно, даже до того, как действие применено; не очень длинная последовательность преобразований может занять 4-14 минут для оценки.

Если я переписываю тот же код, чтобы использовать df.select(df.columns.map(c => ....)), тот же код занимает ~ 2 секунды. Вызов .explain() на любом из них дает тот же результат.

Может кто-нибудь объяснить это?

...