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