Perbedaan antara reduce dan foldLeft / fold dalam pemrograman fungsional (terutama Scala dan Scala API)?

Mengapa Scala dan framework seperti Spark dan Scalding memiliki keduanya reducedan foldLeft? Lalu apa perbedaan antara reducedan