В Spark ленивая оценка является ключевым понятием, и вам лучше ознакомиться с ним, если вы хотите работать со Spark.
Этапы, которые вы видите для слишком быстрого выполнения, не делают каких-либо значительных вычислений.
If they are not doing actual computation, what are they doing?
Они обновляют DAG.
Когда запускается действие, Spark имеет возможность обратиться к DAG для оптимизации вычислений (что было бы невозможно без ленивого).оптимизация).
Подробнее читайте Преобразование искры - почему оно лениво и в чем преимущество?
Более того, я думаю, что ваш коллега поспешил дать вам ответ,и ошибочно сказал:
transformation are cheap
Истина заключается в операциях СДР ref :
Все преобразования в Spark являются ленивыми, поскольку они не вычисляют своирезультаты сразу.Вместо этого они просто запоминают преобразования, примененные к некоторому базовому набору данных (например, к файлу).Преобразования вычисляются только тогда, когда действие требует, чтобы результат был возвращен в программу драйвера.
Дешевое - это не то слово.
Это объясняет, почему в концедень, ваш последний этап (который фактически запрашивает данные и запускает действие) настолько медленный по сравнению с другими задачами.
Я имею в виду, что каждый упомянутый вами этап, похоже, не вызывает какого-либо действия.В результате на последнем этапе необходимо учитывать все предыдущие этапы и выполнять всю необходимую работу, но помните, с оптимизированной точки зрения Spark.