W przypadku przekształceń Spark dodaje je do DAG obliczeń i tylko wtedy, gdy kierowca żąda pewnych danych, to DAG jest faktycznie wykonywany.
Jedną z korzyści jest to, że Spark może podejmować wiele decyzji optymalizacyjnych po tym, jak miał szansę spojrzeć na DAG w całości. Nie byłoby to możliwe, gdyby wszystko wykonało tak szybko, jak to możliwe.
Na przykład - jeśli wykonałeś każdą transformację z zapałem, co to znaczy? Oznacza to, że będziesz musiał zmaterializować wiele pośrednich zbiorów danych w pamięci. Jest to oczywiście nieefektywne - po pierwsze zwiększy koszty GC. (Ponieważ tak naprawdę nie interesują Cię wyniki pośrednie jako takie, to po prostu konwergentne abstrakcje dla ciebie podczas pisania programu.) Więc zamiast tego, to co robisz - mówisz Sparkowi, jaka jest ostateczna odpowiedź, którą interesujesz i wymyśla najlepszy sposób, aby się tam dostać.