1. A method for generating a distributed stream processing application, comprising the steps of: obtaining a declarative description of one or more data stream processing tasks from a graph of operators, wherein the declarative description expresses at least one stream processing task; generating one or more execution units from the declarative description of one or more data stream processing tasks, wherein the one or more execution units are deployable across one or more distributed computing nodes, and comprise a distributed data stream processing application binary; generating one or more coarse granularity containers that encompass one or more fine granularity stream processing operators; using the one or more coarse granularity containers to generate a distributed stream processing application; generating one or more containers that encompass a combination of one or more stream processing operators, wherein said generating comprises: coalescing a combination of one or more operators into one or more containers, wherein said coalescing comprises: using an optimizer to automatically decide which of the one or more operators are to be coalesced into which of the one or more containers; and using user input to manually group the one or more operators into the one or more containers; and fusing an outflow of an operator into an inflow of a downstream operator within a same container.