In this chapter, we discussed how Cascading fits into the overall processing infrastructure. You learned how to build subassemblies to gain better code reuse, how to use cascades to create more complex workflows, and also how to control intermediate files. We also addressed more advanced topics of how to integrate Cascading with external systems. You also learned how to use existing JAR files as well as how to use existing MapReduce jobs for better integration with existing system components. Finally, you learned how use Cascading instrumentation and counters and how these counters can be used to dynamically control the execution of your flows.
In the next chapter, we will discuss how to test and debug Cascading applications. We will review common debugging techniques that can be used when coding a Cascading application and we will also look at "lifecycle" testing when we begin to integrate our code, and then later begin to determine how scalable the application will be.