Comet Native Executors: run LIMIT and top-K queries with a per-partition limit before the exchange
Maintainer thường phản hồi trong vòng 2 ngày
@andygrove đang làm issue này rồi.
Từ ngày 1/11/2026.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- scala
- Lĩnh vực
- distributed-systems
Hướng nghiên cứu
Start with takeOrderedStage in CometNativeExecutorsExec.scala and trace how it handles CometTakeOrderedAndProjectExec; compare that special case with the proposed per-partition limit/top-K, single-partition exchange, and final native stage. Done means both operators are handled by the generic stage-graph builder and only per-partition limited rows cross the exchange.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
What is the problem the feature request solves?
On a Comet Native Executor cluster (#7289), a query with LIMIT, including Dataset.show(), fails: CometCollectLimitExec performs its own shuffle to one partition inside doExecuteColumnar, so it is not a native block, and the driver's stage-graph builder refuses it with "it does not run natively".
CometTakeOrderedAndProjectExec has the same shape. The prototype special-cases it as a stage that reads its child through a single-partition exchange and runs Comet's final top-K plan. Unless the child is a CometLocalTopKExec, the child's whole output crosses that one-partition exchange, where Comet on Spark runs a per-partition top-K first.
Describe the potential solution
Plan both operators as explicit native pieces, as Spark plans LocalLimit, then an exchange, then GlobalLimit: a block with a per-partition limit or top-K, a CometShuffleExchangeExec to a single partition, and a block with the final limit or top-K. The generic stage-graph builder then handles them without a special case, and only the first rows of each partition cross the exchange.
Additional context
The special case is takeOrderedStage in CometNativeExecutorsExec.scala. It calls finalNativePlan(inputPartitions = 2) only to select the sorting branch.
Part of #7288.
Willingness to contribute
Yes. I can contribute this feature independently.
- Ngôn ngữ chính
- Scala
- Star
- 1.3k
- Fork
- 405
- Merge trung bình
- 3 ngày 1 giờ
- Pull request đã merge (30 ngày)
- 277
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/datafusion-comet
-
area:ci enhancement priority:low requires-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
apache/datafusion-comet#7319 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
area:ci bug priority:low requires-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
apache/datafusion-comet#7315 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
requires-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/datafusion-comet#7240 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
bug priority:low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
apache/datafusion-comet#7176 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
docs: update Scala comments that reference the removed iceberg-writes.md pageCó thể đã có người làm @Abhishek-Mohan đã nhận 4 ngày trước. Đang mởenhancement
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 83/100
apache/datafusion-comet#7101 ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của apache/datafusion-comet
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
propensive/soundness#2351 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Traffic event delivered/rejected counters appear swapped in TrafficStateController.updateWithReceiptĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
digital-asset/canton#705 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
easy first-contributor first-contributors good first issue help wanted scala up-for-grabs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
fork-commit-merge/fork-commit-merge#8457 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
promovolve/promovolve#358 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Broken links in the docsĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100
svroonland/zio-kinesis#1431 ·