MapReduce applications, like all software artifacts, need to be written to be reusable, modular, and testable. They must have specific requirements related to the fact that they run in a Hadoop environment. The goal of this chapter is to present some design patterns to be applied in the implementation of Scalding applications. While the principles they follow are common to software development, we will present how to implement them in the specific domain.
The principles they follow are simplicity, single responsibility, and dependency inversion. In the context of Scalding, we will call them: