Multiple batch joins on the same key results in multiple shuffles
#19.097 aperta il 3 giu 2022
Metriche repository
- Star
- (7313 star)
- Metriche merge PR
- (Merge medio 6g) (243 PR mergiate in 30 g)
Descrizione
The query like this:
SELECT a.*, b.*, c.* FROM a JOIN b ON a.some_id = b.some_id JOIN c ON a.some_id = c.some_id;
results in two shuffles. Can probably be optimized.
Relevant code:
-
BeamJoinRel implements Join in SQL: https://github.com/apache/beam/blob/1675b0f843ed34de8ba6f3676f794db80b40139d/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/rel/BeamJoinRel.java#L194
-
CoGBK Join implementation: https://github.com/apache/beam/blob/279a05604b83a54e8e5a79e13d8761f94841f326/sdks/java/extensions/join-library/src/main/java/org/apache/beam/sdk/extensions/joinlibrary/Join.java#L36
Imported from Jira BEAM-5049. Original Jira may contain additional context. Reported by: kedin.