←Created page with '{{subst:AFC submission/draftnew}} <!--- Important, do not remove this line before article has been created. ---> ====== The PACT Programming Model ====== ====...'
=====The PACT andprogramming model is a generalization of the [[MapReduce]] programming =====model.
The PACT programming model is a generalization of the MapReduce programming model ([[http://labs.google.com/papers/mapreduce.html|MapReduce]]). In the following, we briefly introduce the MapReduce programming model and highlight the main differences to the PACT programming model. \\
==== MapReduce Programming Model ====
The goal of the MapReduce programming model is to ease the development of parallel data processing tasks by hiding the complexity of writing parallel and fault-tolerant code. To specify a MapReduce job, a developer needs to implement only two first-order functions. When a MapReduce job is executed by a MapReduce framework, these user functions are handed to the second-order functions ''map()'' and ''reduce()''. The framework takes care of executing the job in a distributed and fault-tolerant way.
The user functions can be of arbitrary complexity. Both operate on independent subsets of the input data which are build by the second-order functions (SOFs) ''map()'' and ''reduce()'' (Data Parallelism). MapReduce's data model is based on pairs of keys and values. Both, key and value can be of any complex type and are interpreted only by the user code and not by the execution framework.