Apache Spark создает DAG (Направленный ациклический граф), тогда как Mapreduce идет с собственными Map и Reduce. При выполнении в Spark логические зависимости образуют физические зависимости.
Теперь, что такое DAG ?
DAG строит логические зависимости перед выполнением (думайте об этом как о визуальном графике)
Когда у нас есть несколько карт, а уменьшение или вывод одного уменьшения - это вход на другую карту, тогда DAG поможет ускорить выполнение заданий.
DAG построен в Tez (правая сторона фотографии), но не в MapReduce (левая сторона).
Примечание:
Apache Spark работает над DAG, но вместо Map / Reduce есть этапы. У Tez есть DAG и он работает на Map / Reduce. Для упрощения я использовал контекст Map / Reduce, но помните, что в Apache Spark есть этапы. Но концепция DAG остается прежней.
Причина 2:
Карта сохраняет свои выходные данные на диск (буфер также, но когда 90% его заполнено, то выходные данные отправляются на диск) Оттуда данные объединяются.
Но в Apache Spark промежуточные данные сохраняются в памяти, что делает их быстрее.
Проверьте эту ссылку для деталей