Hi dev,

I have a question about how join strategies are defined.

I see that CartesianProductExec is used only for InnerJoin, while for other
kind of joins BroadcastNestedLoopJoinExec is used.
For reference:
https://github.com/apache/spark/blob/cd9f49a2aed3799964976ead06080a0f7044a0c3/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkStrategies.scala#L260

May you kindly explain me why this is done? It doesn't seem a great choice
to me, since BroadcastNestedLoopJoinExec can fail with OOM.

Thanks,
Marco

Reply via email to