Skip to content

[python][ray] Avoid MERGE shuffle starvation on small clusters - #9360

Draft
XiaoHongbo-Hope wants to merge 1 commit into
apache:masterfrom
XiaoHongbo-Hope:codex/ray-merge-source-boundary
Draft

[python][ray] Avoid MERGE shuffle starvation on small clusters#9360
XiaoHongbo-Hope wants to merge 1 commit into
apache:masterfrom
XiaoHongbo-Hope:codex/ray-merge-source-boundary

Conversation

@XiaoHongbo-Hope

Copy link
Copy Markdown
Contributor

What changed

  • Materialize narrow matched update/delete rows before the file-routing shuffle in generic Ray MERGE.
  • Keep self-merge streaming and leave other row-id writers unchanged.

Why

When a lazy source already contains a join or shuffle, Ray can schedule the source join, MERGE target join, and file-routing shuffle in one streaming plan. On a 2-CPU cluster, shuffle aggregators can reserve the available resources and indefinitely starve the final routing stage.

The new boundary separates the matched join from file routing without materializing the full source.

Tests

  • Joined BLOB transform and matched update on 2 CPUs
  • Joined source and matched delete on 2 CPUs
  • Self-merge no-materialization regression
  • 127 Ray MERGE tests
  • 52 update/conflict/core commit tests
  • 24 table MERGE API tests
  • flake8, py_compile, and git diff check

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant