[ 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-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org