Multiple batch joins on the same key results in multiple shuffles
#19.097 geöffnet am 3. Juni 2022
Repository-Metriken
- Stars
- (7.313 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 6T) (243 gemergte PRs in 30 T)
Beschreibung
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.