14. One or more processor readable storage devices having processor readable code stored thereon, the processor readable code programs one or more processors to perform a method comprising: receiving one or more expressions from an application executing at a first machine, the one or more expressions include an aggregate function that invokes a user-defined function referencing a first dataset; automatically generating an execution plan for executing the one or more expressions in parallel at nodes of a compute cluster, the automatically generating including: determining whether the one or more expressions include an extension specifying a particular data partitioning for the first dataset, if the one or more expressions include the extension specifying a particular data partitioning, generating a first execution graph with the first dataset partitioned according to the particular data partitioning, if the one or more expressions do not include the extension specifying a particular data partitioning, generating a second execution graph with the first dataset partitioned according to a different data partitioning, determining whether the user-defined function includes an annotation specifying the user-defined function as associative, if the user-defined function includes the annotation, generating code to apply the aggregate function on the individual partitions of the first dataset and code to combine the results of applying the aggregate function on the individual partitions, and if the user-defined function does not include the annotation, generating code to stream the individual partitions of the first dataset to a single node for application of the aggregate function; and providing the execution plan to an execution engine that controls parallel execution of the one or more expressions in the compute cluster.
14. One or more processor readable storage devices having processor readable code stored thereon, the processor readable code programs one or more processors to perform a method comprising: receiving one or more expressions from an application executing at a first machine, the one or more expressions include an aggregate function that invokes a user-defined function referencing a first dataset; automatically generating an execution plan for executing the one or more expressions in parallel at nodes of a compute cluster, the automatically generating including: determining whether the one or more expressions include an extension specifying a particular data partitioning for the first dataset, if the one or more expressions include the extension specifying a particular data partitioning, generating a first execution graph with the first dataset partitioned according to the particular data partitioning, if the one or more expressions do not include the extension specifying a particular data partitioning, generating a second execution graph with the first dataset partitioned according to a different data partitioning, determining whether the user-defined function includes an annotation specifying the user-defined function as associative, if the user-defined function includes the annotation, generating code to apply the aggregate function on the individual partitions of the first dataset and code to combine the results of applying the aggregate function on the individual partitions, and if the user-defined function does not include the annotation, generating code to stream the individual partitions of the first dataset to a single node for application of the aggregate function; and providing the execution plan to an execution engine that controls parallel execution of the one or more expressions in the compute cluster. 16. One or more processor readable storage devices according to claim 14 , wherein the method further comprises: dividing the first dataset into a plurality of partitions according to the particular data partitioning or the different data partitioning; providing each partition of the plurality to one node in the compute cluster; and executing the one or more expressions in parallel at the nodes of the compute cluster.