In Apache Spark, each physical operator in the physical plan has 4 properties:
- outputPartitioning
- outputOrdering
- requiredChildDistribution
- requiredChildOrdering
But aren't outputPartioning and requiredChildDistribution the same? How are they different and what do they fundamentally represent? Same for outputOrdering and requiredChildOrdering?