perf: use extend when buffering partition row indices in the native shuffle writer
Maintainer thường phản hồi trong vòng 2 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 78/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- rust, spark
- Lĩnh vực
- data-engineering
Hướng nghiên cứu
Vòng lặp cần thay thế nằm trong MultiPartitionShuffleRepartitioner::buffer_partitioned_batch_may_spill ở native/shuffle/src/partitioners/multi_partition.rs, nơi một lệnh gọi reserve được theo sau bởi các lệnh gọi push cho từng hàng. Hãy đọc hàm đó, sau đó build benchmark bằng cargo bench --bench shuffle_writer và lưu một baseline trước khi chỉnh sửa. Công việc được coi là xong khi vòng lặp được thay bằng extend trên cùng các tuple, benchmark được so sánh với baseline và kết quả được báo cáo, kể cả khi nó nằm trong sai số.
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?
MultiPartitionShuffleRepartitioner::buffer_partitioned_batch_may_spill in native/shuffle/src/partitioners/multi_partition.rs pushes the row indices of each partition one at a time after reserve:
indices.reserve(row_indices.len());
for row_idx in row_indices {
indices.push((buffered_partition_idx, *row_idx));
}
Vec::push re-checks capacity on every iteration. indices.extend(row_indices.iter().map(|&r| (buffered_partition_idx, r))) gets the trusted-length specialization and writes the tuples in one pass.
Describe the potential solution
Replace the loop with extend. Run cargo bench --bench shuffle_writer before and after (save a baseline with --save-baseline before); the change is small, so report the result either way and drop it if it is within noise.
Additional context
Micro item from #5002, carried into #5905. Good first issue.
- Ngôn ngữ chính
- Scala
- Star
- 1.3k
- Fork
- 391
- Merge trung bình
- 2 ngày 17 giờ
- Pull request đã merge (30 ngày)
- 439
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
-
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
-
Native hashing of NullType and ANSI interval values fails with "Unsupported data type in hasher"Có thể đã có người làm @ump45nose đã nhận 4 ngày trước. Đang mởarea:expressions area:shuffle bug priority:high
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
apache/datafusion-comet#7063 ·
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 68/100
apache/datafusion-comet#7001 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Deduplicate spark_ceil and spark_floor and port floor's decimal boundary tests to ceilCó thể đã có người làm @med9110 đã nhận 6 ngày trước. Đang mởarea:expressions enhancement help wanted requires-triage rust tech debt
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 68/100
apache/datafusion-comet#6974 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Iceberg data tables whose names end with a metadata-table name fall back to SparkCó thể làm lại được @aryan9948 đã nhận 15 ngày trước và không có pull request nào đang mở. Đang mởrequires-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
apache/datafusion-comet#6719 · 1 bình luận ·
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ó 1/5 1-3 giờ Mức phù hợp với người mới 91/100
com-vitthalmirji/toon4s#117 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
zio/zio-blocks#1780 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
digital-asset/participant-query-store#168 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
propensive/soundness#2294 ·
Maintainer thường phản hồi trong vòng 1 ngày