Я что-то заметил и хотел получить объяснение (или хотя бы подтверждение).
В моей компании есть общая схема, согласно которой для того, чтобы что-то сделать со всеми столбцами DataFrame
, мы делаем
colList.foldleft(df)({case(df_, colName) => df_.withColumn...})
В общем, это работает, но я обнаружил, что в некоторых случаях он очень медленный, если работать на DataFrame
с кучей столбцов и сложным восходящим потоком. Что интересно, это медленно, даже до того, как действие применено; не очень длинная последовательность преобразований может занять 4-14 минут для оценки.
Если я переписываю тот же код, чтобы использовать df.select(df.columns.map(c => ....))
, тот же код занимает ~ 2 секунды. Вызов .explain()
на любом из них дает тот же результат.
Может кто-нибудь объяснить это?