Cascalog is a logic programming library for Clojure that allows users to run queries on enormous datasets (using Apache Hadoop). Cascalog's 2.0 release introduces two new query compilation modes - a local mode for in-memory analysis and a Trident mode for running Cascalog queries on Storm. These new features make Cascalog extremely powerful at every corner of the big data trinity; testing, batch-processing and realtime streaming.
This is a talk about the design of Cascalog's flexible, functional logic DSL. I'll discuss the protocol-based design of Cascalog's DSL and show how Clojure's dynamic dispatching made it easy to add these new compilation modes. After you learn Cascalog, you wonder how you ever did data processing any other way.