-
Notifications
You must be signed in to change notification settings - Fork 28.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SPARK-3349] [SQL] Output partitioning of limit should not be inherited from child #2262
Conversation
Can one of the admins verify this patch? |
add to whitelist |
QA tests have started for PR 2262 at commit
|
QA tests have finished for PR 2262 at commit
|
@@ -97,6 +97,7 @@ case class Limit(limit: Int, child: SparkPlan) | |||
// partition local limit -> exchange into one partition -> partition local limit again | |||
|
|||
override def output = child.output | |||
override def outputPartitioning = SinglePartition |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SinglePartition
for LIMIT
may cause performance issue for large number of records(in multiple partitions), do we really need to change this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not changing the implementation, just correcting a bug that
prevents exchange operators from being inserted when we need them.
On Sep 3, 2014 11:00 PM, "Cheng Hao" notifications@github.com wrote:
In
sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala:@@ -97,6 +97,7 @@ case class Limit(limit: Int, child: SparkPlan)
// partition local limit -> exchange into one partition -> partition local limit againoverride def output = child.output
- override def outputPartitioning = SinglePartition
SinglePartition for LIMIT may cause performance issue for large number of
records(in multiple partitions), do we really need to change this?—
Reply to this email directly or view it on GitHub
https://github.com/apache/spark/pull/2262/files#r17096863.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, understood, thanks for explanation.
added regression test |
test this please |
Jenkins, test this please. |
QA tests have started for PR 2262 at commit
|
QA tests have finished for PR 2262 at commit
|
Jenkins, test this please |
This passed tests before and I ran the new regression test by hand. I'm going to merge this into master. Thanks Eric! |
**This PR introduces a subtle change in semantics for HiveContext when using the results in Python or Scala. Specifically, while resolution remains case insensitive, it is now case preserving.** _This PR is a follow up to #2293 (and to a lesser extent #2262 #2334)._ In #2293 the catalog was changed to store analyzed logical plans instead of unresolved ones. While this change fixed the reported bug (which was caused by yet another instance of us forgetting to put in a `LowerCaseSchema` operator) it had the consequence of breaking assumptions made by `MultiInstanceRelation`. Specifically, we can't replace swap out leaf operators in a tree without rewriting changed expression ids (which happens when you self join the same RDD that has been registered as a temp table). In this PR, I instead remove the need to insert `LowerCaseSchema` operators at all, by moving the concern of matching up identifiers completely into analysis. Doing so allows the test cases from both #2293 and #2262 to pass at the same time (and likely fixes a slew of other "unknown unknown" bugs). While it is rolled back in this PR, storing the analyzed plan might actually be a good idea. For instance, it is kind of confusing if you register a temporary table, change the case sensitivity of resolution and now you can't query that table anymore. This can be addressed in a follow up PR. Follow-ups: - Configurable case sensitivity - Consider storing analyzed plans for temp tables Author: Michael Armbrust <michael@databricks.com> Closes #2382 from marmbrus/lowercase and squashes the following commits: c21171e [Michael Armbrust] Ensure the resolver is used for field lookups and ensure that case insensitive resolution is still case preserving. d4320f1 [Michael Armbrust] Merge remote-tracking branch 'origin/master' into lowercase 2de881e [Michael Armbrust] Address comments. 219805a [Michael Armbrust] style 5b93711 [Michael Armbrust] Replace LowerCaseSchema with Resolver.
This resolves https://issues.apache.org/jira/browse/SPARK-3349