A Velox Primer, Part 3
At the end of the previous article, we were halfway through running our first distributed query:
SELECT l_partkey, count(*) FROM lineitem GROUP BY l_partkey;
We discussed how a query starts, how tasks are set up, and the interactions between plans, operators, and drivers. We have also presented how the first stage of the query is executed, from table scan to partitioned output - or the producer side of the shuffle.
In this article, we will discuss the second query stage, or the consumer side of the shuffle.

