A BroadcastExchangeExec collects, transforms and finally broadcasts the result of a transformed SparkPlan.
Ensures that the Partitioning of input data meets the Distribution requirements for each operator by inserting ShuffleExchange Operators where required.
Base class for operators that exchange data among multiple threads or processes.
Find out duplicated exchanges in the spark plan, then use the same exchange for all the references.
A wrapper for reused exchange to have different output, because two exchanges which produce logically identical output will have distinct sets of output attribute ids, so we need to preserve the original ids because they're what downstream operators are expecting.
Performs a shuffle that will result in the desired newPartitioning
.