You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Qiping Li (JIRA)" <ji...@apache.org> on 2015/04/28 07:43:05 UTC
[jira] [Updated] (SPARK-7181) External Sorter merge with
aggregation doesn't aggregate all the values for the same key when we have
a total ordering
[ https://issues.apache.org/jira/browse/SPARK-7181?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Qiping Li updated SPARK-7181:
-----------------------------
Description:
In the function {{mergeWithAggregation}} of {{ExternalSorter.scala}}, when there is a total ordering for keys K, values of the same key in the sorted iterator should be combined. Currently this is done by this:
{code}
val elem = sorted.next()
val k = elem._1
var c = elem._2
while (sorted.hasNext && sorted.head._1 == k) {
c = mergeCombiners(c, sorted.head._2)
}
{code}
This will go to an infinity loop when there are more than 1 values with the same key. `sorted.next()` should be called to fix this.
was:
In the function {{mergeWithAggregation}} of {{ExternalSorter.scala}}, when there is a total ordering for keys K, values of the same key in the sorted iterator should be combined. Currently this is done by this:
{code}
val elem = sorted.next()
val k = elem._1
var c = elem._2
while (sorted.hasNext && sorted.head._1 == k) {
c = mergeCombiners(c, sorted.head._2)
}
{code}
This will only combine the first two values with the same key, which is not what expected.So in the while loop, we should call {{sorted.next()}} to combine other values too.
> External Sorter merge with aggregation doesn't aggregate all the values for the same key when we have a total ordering
> ----------------------------------------------------------------------------------------------------------------------
>
> Key: SPARK-7181
> URL: https://issues.apache.org/jira/browse/SPARK-7181
> Project: Spark
> Issue Type: Bug
> Components: Spark Core
> Affects Versions: 1.3.1
> Reporter: Qiping Li
> Priority: Critical
> Fix For: 1.3.2, 1.4.0
>
>
> In the function {{mergeWithAggregation}} of {{ExternalSorter.scala}}, when there is a total ordering for keys K, values of the same key in the sorted iterator should be combined. Currently this is done by this:
> {code}
> val elem = sorted.next()
> val k = elem._1
> var c = elem._2
> while (sorted.hasNext && sorted.head._1 == k) {
> c = mergeCombiners(c, sorted.head._2)
> }
> {code}
> This will go to an infinity loop when there are more than 1 values with the same key. `sorted.next()` should be called to fix this.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org