Skip to content

SPARK-1178: missing document of spark.scheduler.revive.interval - #74

Closed
CodingCat wants to merge 1 commit into
apache:masterfrom
CodingCat:SPARK-1178
Closed

SPARK-1178: missing document of spark.scheduler.revive.interval#74
CodingCat wants to merge 1 commit into
apache:masterfrom
CodingCat:SPARK-1178

Conversation

@CodingCat

Copy link
Copy Markdown
Contributor

@AmplabJenkins

Copy link
Copy Markdown

Merged build triggered.

@AmplabJenkins

Copy link
Copy Markdown

Merged build started.

@AmplabJenkins

Copy link
Copy Markdown

Merged build finished.

@AmplabJenkins

Copy link
Copy Markdown

All automated tests passed.
Refer to this link for build results: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/12991/

@rxin

rxin commented Mar 4, 2014

Copy link
Copy Markdown
Contributor

Thanks. Merged.

@asfgitasfgit closed this in 1865dd6Mar 4, 2014
@CodingCat
CodingCat deleted the SPARK-1178 branch March 17, 2014 17:22
jhartlaub referenced this pull request in jhartlaub/spark May 27, 2014
Job cancellation via job group id.
This PR adds a simple API to group together a set of jobs belonging to a thread and threads spawned from it. It also allows the cancellation of all jobs in this group.
An example:
sc.setJobDescription("this_is_the_group_id", "some job description")
sc.parallelize(1 to 10000, 2).map { i => Thread.sleep(10); i }.count()
In a separate thread:
sc.cancelJobGroup("this_is_the_group_id")
(cherry picked from commit 599dcb0)
Signed-off-by: Reynold Xin <rxin@apache.org>
clockfly added a commit to clockfly/spark that referenced this pull request Sep 22, 2016
…for implementing percentile_approx
This is cherry-pick of open source master branch (hash: cc33460)
## What changes were proposed in this pull request?
This is a sub-task of [SPARK-16283](https://issues.apache.org/jira/browse/SPARK-16283) (Implement percentile_approx SQL function), which moves class QuantileSummaries to project catalyst so that it can be reused when implementing aggregation function `percentile_approx`.
This PR only does class relocation, class implementation is not changed.
Author: Sean Zhong <seanzhongdatabricks.com>
Author: Sean Zhong <seanzhong@databricks.com>
Closesapache#74 from clockfly/move_quantile_summaries.
robert3005 pushed a commit to robert3005/spark that referenced this pull request Jan 12, 2017
cenyuhai added a commit to cenyuhai/spark that referenced this pull request Oct 8, 2017
[SPARK-20865] Structured streaming dataframe cache、unpersist报错
structured streaming dataset cache 会报错,应当给个log告警忽略cache,unpersist等操作。
resolveapache#74 See merge request !65
jlopezmalla pushed a commit to jlopezmalla/spark that referenced this pull request Nov 3, 2017
ashangit added a commit to ashangit/spark that referenced this pull request Jul 18, 2018
Bump spark criteo-2.2 to last branch-2.2 commits
cloud-fan pushed a commit that referenced this pull request Jan 14, 2021
…join can be planned as broadcast join
### What changes were proposed in this pull request?
Should not pushdown LeftSemi/LeftAnti over Aggregate for some cases.
```scala
spark.range(50000000L).selectExpr("id % 10000 as a", "id % 10000 as b").write.saveAsTable("t1")
spark.range(40000000L).selectExpr("id % 8000 as c", "id % 8000 as d").write.saveAsTable("t2")
spark.sql("SELECT distinct a, b FROM t1 INTERSECT SELECT distinct c, d FROM t2").explain
```
Before this pr:
```
== Physical Plan ==
AdaptiveSparkPlan isFinalPlan=false
+- HashAggregate(keys=[a#16L, b#17L], functions=[])
+- HashAggregate(keys=[a#16L, b#17L], functions=[])
+- HashAggregate(keys=[a#16L, b#17L], functions=[])
+- Exchange hashpartitioning(a#16L, b#17L, 5), ENSURE_REQUIREMENTS, [id=#72]
+- HashAggregate(keys=[a#16L, b#17L], functions=[])
+- SortMergeJoin [coalesce(a#16L, 0), isnull(a#16L), coalesce(b#17L, 0), isnull(b#17L)], [coalesce(c#18L, 0), isnull(c#18L), coalesce(d#19L, 0), isnull(d#19L)], LeftSemi
:- Sort [coalesce(a#16L, 0) ASC NULLS FIRST, isnull(a#16L) ASC NULLS FIRST, coalesce(b#17L, 0) ASC NULLS FIRST, isnull(b#17L) ASC NULLS FIRST], false, 0
: +- Exchange hashpartitioning(coalesce(a#16L, 0), isnull(a#16L), coalesce(b#17L, 0), isnull(b#17L), 5), ENSURE_REQUIREMENTS, [id=#65]
: +- FileScan parquet default.t1[a#16L,b#17L] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex[file:/Users/yumwang/spark/spark-warehouse/org.apache.spark.sql.Data..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<a:bigint,b:bigint>
+- Sort [coalesce(c#18L, 0) ASC NULLS FIRST, isnull(c#18L) ASC NULLS FIRST, coalesce(d#19L, 0) ASC NULLS FIRST, isnull(d#19L) ASC NULLS FIRST], false, 0
+- Exchange hashpartitioning(coalesce(c#18L, 0), isnull(c#18L), coalesce(d#19L, 0), isnull(d#19L), 5), ENSURE_REQUIREMENTS, [id=#66]
+- HashAggregate(keys=[c#18L, d#19L], functions=[])
+- Exchange hashpartitioning(c#18L, d#19L, 5), ENSURE_REQUIREMENTS, [id=#61]
+- HashAggregate(keys=[c#18L, d#19L], functions=[])
+- FileScan parquet default.t2[c#18L,d#19L] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex[file:/Users/yumwang/spark/spark-warehouse/org.apache.spark.sql.Data..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<c:bigint,d:bigint>
```
After this pr:
```
== Physical Plan ==
AdaptiveSparkPlan isFinalPlan=false
+- HashAggregate(keys=[a#16L, b#17L], functions=[])
+- Exchange hashpartitioning(a#16L, b#17L, 5), ENSURE_REQUIREMENTS, [id=#74]
+- HashAggregate(keys=[a#16L, b#17L], functions=[])
+- SortMergeJoin [coalesce(a#16L, 0), isnull(a#16L), coalesce(b#17L, 0), isnull(b#17L)], [coalesce(c#18L, 0), isnull(c#18L), coalesce(d#19L, 0), isnull(d#19L)], LeftSemi
:- Sort [coalesce(a#16L, 0) ASC NULLS FIRST, isnull(a#16L) ASC NULLS FIRST, coalesce(b#17L, 0) ASC NULLS FIRST, isnull(b#17L) ASC NULLS FIRST], false, 0
: +- Exchange hashpartitioning(coalesce(a#16L, 0), isnull(a#16L), coalesce(b#17L, 0), isnull(b#17L), 5), ENSURE_REQUIREMENTS, [id=#67]
: +- HashAggregate(keys=[a#16L, b#17L], functions=[])
: +- Exchange hashpartitioning(a#16L, b#17L, 5), ENSURE_REQUIREMENTS, [id=#61]
: +- HashAggregate(keys=[a#16L, b#17L], functions=[])
: +- FileScan parquet default.t1[a#16L,b#17L] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex[file:/Users/yumwang/spark/spark-warehouse/org.apache.spark.sql.Data..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<a:bigint,b:bigint>
+- Sort [coalesce(c#18L, 0) ASC NULLS FIRST, isnull(c#18L) ASC NULLS FIRST, coalesce(d#19L, 0) ASC NULLS FIRST, isnull(d#19L) ASC NULLS FIRST], false, 0
+- Exchange hashpartitioning(coalesce(c#18L, 0), isnull(c#18L), coalesce(d#19L, 0), isnull(d#19L), 5), ENSURE_REQUIREMENTS, [id=#68]
+- HashAggregate(keys=[c#18L, d#19L], functions=[])
+- Exchange hashpartitioning(c#18L, d#19L, 5), ENSURE_REQUIREMENTS, [id=#63]
+- HashAggregate(keys=[c#18L, d#19L], functions=[])
+- FileScan parquet default.t2[c#18L,d#19L] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex[file:/Users/yumwang/spark/spark-warehouse/org.apache.spark.sql.Data..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<c:bigint,d:bigint>
```
### Why are the changes needed?
1. Pushdown LeftSemi/LeftAnti over Aggregate will affect performance.
2. It will remove user added DISTINCT operator, e.g.: [q38](https://github.com/apache/spark/blob/master/sql/core/src/test/resources/tpcds/q38.sql), [q87](https://github.com/apache/spark/blob/master/sql/core/src/test/resources/tpcds/q87.sql).
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Unit test and benchmark test.
SQL | Before this PR(Seconds) | After this PR(Seconds)
-- | -- | --
q14a | 660 | 594
q14b | 660 | 600
q38 | 55 | 29
q87 | 66 | 35
Before this pr:
![image](https://user-images.githubusercontent.com/5399861/104452849-8789fc80-55de-11eb-88da-44059899f9a9.png)
After this pr:
![image](https://user-images.githubusercontent.com/5399861/104452899-9a043600-55de-11eb-9286-d8f3a23ca3b8.png)
Closes#31145 from wangyum/SPARK-34081.
Authored-by: Yuming Wang <yumwang@ebay.com>
Signed-off-by: Wenchen Fan <wenchen@databricks.com>
MaxGekk added a commit to MaxGekk/spark that referenced this pull request Sep 2, 2026
… budget (apache#74)
### What changes were proposed in this pull request?
A plan only, no code: section 10 of `PLAN_TASK_32.md`, plus a pointer from `PLAN_MILESTONE_4.md`'s task-32 row and section 2.9.
Step B2 is the grouping change that turns step B1's fragment sharing into a hot-loop win. Today every calendar output still gets its own loop method (`CHRONO_WEIGHT` 50 against `GROUP_BUDGET` 16), so the shared civil-from-days prefix only ever fires in the epilogue. The gate measured B2's shape at 1.29x/1.57x/1.80x for two/three/four fields at AVX-512 and nearly the same at 128-bit (`PLAN_TASK_32.md` 7.2, 7.4), and measured the compile cliff away (7.5) - but it did so by forcing `groupBudget` to 200, which is the measurement rig, not a shippable rule: a wide budget also merges plain chains, and task 17 measured that losing (4436 vs 3150 M rows/s in the committed parity file).
The plan replaces that with a rule. `addOps` counts a fragment's prefix once per group and reports what an output saved by reusing one; `groupOutputs` gains a second join clause that admits an output past `GROUP_BUDGET` only when `saved > 0`, bounded by a new `fusedCeiling` emit option. That is section 3.2's original sketch with one correction: 3.2 wrote the test as `marginal <= budget`, which would have re-merged task 17's case (marginal 6); `saved > 0` keeps it split. Section 10.2 works the rule through the shapes this task has measured, including one recorded limitation (greedy output order can leave `month(d)` in a group without `year(d)`; correct, no worse than today, parked in the debt register).
The rest: weights re-counted from emitted instructions because they now bound a method (10.3); a ladder past four fields - 6, 8, 12 outputs over one date via `add_months(d, k)` literals - that sets `fusedCeiling` on throughput and `-XX:+PrintCompilation` time at both widths (10.4); which tests flip and which guard is added (10.5, including a byte-identity check over non-calendar shapes so clause 2 cannot leak past fragments); six registered predictions, one of them for task 45 to score (10.6); risks (10.7); a four-commit sequence after apache#73 and apache#64 have landed (10.8); and what stays out (10.9).
### Why are the changes needed?
The gate for B2 has cleared at both widths and the remaining work is a design choice with a measured wrong answer available (the wide budget). Writing the rule down before building it is the project's standing practice, and this one has a specific trap - 3.2's own sketch re-merges task 17's case - that is cheaper to catch on paper than in a parity regeneration diff.
### Does this PR introduce _any_ user-facing change?
No. Documentation only.
### How was this patch tested?
Not applicable - plan files only. ASCII checked; the prose width matches the file's existing convention.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Fable 5.1)
MaxGekk added a commit to MaxGekk/spark that referenced this pull request Sep 4, 2026
…ne 5 for the other lanes; tasks 56-62
### What changes were proposed in this pull request?
Plan files only, in four commits, each standing on its own.
**1. The task table audited against master.** Every row of `PLAN_MILESTONE_4.md` without a DONE marker was checked against the code, its plan file and the merged pull requests. One row was done and unmarked: 41, `unix_date`/`date_from_unix_date`, shipped as apache#63. Row 32 now says what master shows: steps A and B1 done (apache#72), step B2 planned (`PLAN_TASK_32.md` 10, apache#74) and not built, since `groupOutputs` is unchanged and the emitter suite pins one loop method per calendar output. Rows 25, 44, 46 and 47 say "not started" with what moved under them; 39, 42 and 49 say "planned" with their dependencies; 49's plan is located in section 2.19 rather than a task file. `PLAN_TASK_43.md` carried two "8. Outcome" headings; the template one is gone. Rows 34, 35, 38 and 52 are left to apache#115 and apache#116, which close them.
**2. Milestone 4 re-scoped to the date family and the emitter; the other lanes become milestone 5.** The owner's decision: milestone 4 is `DateType` plus the emitter and evaluator infrastructure, and every task whose subject is another lane or output type moves out. Six tasks move, text and numbers unchanged, into a new `PLAN_MILESTONE_5.md`: 27 boolean outputs, 28 lane-width conversion, 29 int64 lanes, 30 ANSI integer arithmetic, 39 `date - date` and 49 civil-from-days in long lanes, with their design sections, table rows, verification, risks, the two open questions they own, and the catalogue items about other lanes and the follow-on ladder (1-5, 7-10), item numbers preserved. Milestone 4 keeps stubs under the old section numbers so citations resolve, a dated re-scope note at the top because a plan is a record, and its own catalogue items 6, 11, 12 and 13. The coverage milestone that was called 5 is now 6: `SCOPE_MILESTONE_5.md` is renamed to `SCOPE_MILESTONE_6.md` with a renumbering note, and every reference that meant the coverage milestone (README, VISION, AGENTS, SKILLS, milestone 3's plan, tasks 19, 21 and 22, the quote allowlist) says 6. README gains a milestone 5 entry.
**3. Six date-lane tasks from a coverage survey, 56-61.** A survey of Spark's date surface (the function registry and `datetimeExpressions.scala`) against the compiler's arms, taken after the re-scope, left six gaps a date lane can close, each with a design section (2.23 to 2.28) and a row: 56 `date + INTERVAL n DAY` as a compiler rewrite of the int-cast form onto task 38's column-offset node, the stored int64 interval column staying out by decision; 57 `extract(DAYOFWEEK_ISO)` as one narrow arm to a new node, not general int arithmetic; 58 `extract(YEAROFWEEK)` as `year` over task 37's Thursday shift; 59 `next_day` with a weekday column, introducing the derived int32 leaf (an evaluator pre-pass through the row engine's own parser) that 61 reuses; 60 `add_months` with a month-count column, its compile-time bound moved to task 52's producer guard; 61 `trunc` with a format column as a node computing all four levels and selecting per lane.
**4. Task 62, the closing measurement.** Every committed number so far compares two Varka lowerings on a laptop whose AVX-512 runs through a 256-bit datapath, against this fork with Varka off. The milestone closes with the number a reader wants: every covered date expression, in the projection and filter shapes, against stock Apache Spark on JDK 17 (its default) and on JDK 25, with Varka on JDK 25, on a runner with a real 512-bit datapath - one Java driver submitted to the three distributions in one dispatch of the benchmark workflow with `expected-cpu` pinned to a full-width Xeon, provenance including the 256-to-512 op-count ladder that proves the datapath, and README's benchmark section rewritten from the three files with a reproduction guide an outside reader can follow. Section 2.29 and row 62.
### Why are the changes needed?
The table had drifted from master (one finished task unmarked, several rows with no state), the milestone's scope had grown past its title, and the coverage survey found date-lane gaps no row named. Milestone 4 now says what it is, what is left in it, and how it ends.
### Does this PR introduce _any_ user-facing change?
No. Plan and documentation files only; no code.
### How was this patch tested?
`dev/varka_quote_check.py` (every quoted figure traces to a committed results file; the four probe figures followed their paragraph to `PLAN_MILESTONE_5.md` in the allowlist) and `dev/varka_precommit.sh --working-tree` on every commit. Every cross-reference to the renamed scope document was found by `git grep` and repointed; the milestone 4 stubs keep every old section and item number resolvable.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Fable 5.1)
Sign up for freeto 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.

3 participants

@CodingCat@AmplabJenkins@rxin