Github user mateiz commented on a diff in the pull request:

    https://github.com/apache/spark/pull/266#discussion_r11319323
  
    --- Diff: 
core/src/main/scala/org/apache/spark/partial/GroupedCountEvaluator.scala ---
    @@ -22,36 +22,33 @@ import java.util.{HashMap => JHashMap}
     import scala.collection.JavaConversions.mapAsScalaMap
     import scala.collection.Map
     import scala.collection.mutable.HashMap
    +import scala.reflect.ClassTag
     
     import cern.jet.stat.Probability
    -import it.unimi.dsi.fastutil.objects.{Object2LongOpenHashMap => OLMap}
    +
    +import org.apache.spark.util.collection.OpenHashMap
     
     /**
      * An ApproximateEvaluator for counts by key. Returns a map of key to 
confidence interval.
      */
    -private[spark] class GroupedCountEvaluator[T](totalOutputs: Int, 
confidence: Double)
    -  extends ApproximateEvaluator[OLMap[T], Map[T, BoundedDouble]] {
    +private[spark] class GroupedCountEvaluator[T : ClassTag](totalOutputs: 
Int, confidence: Double)
    +  extends ApproximateEvaluator[OpenHashMap[T,Long], Map[T, BoundedDouble]] 
{
     
       var outputsMerged = 0
    -  var sums = new OLMap[T]   // Sum of counts for each key
    +  var sums = new OpenHashMap[T,Long]()   // Sum of counts for each key
     
    -  override def merge(outputId: Int, taskResult: OLMap[T]) {
    +  override def merge(outputId: Int, taskResult: OpenHashMap[T,Long]) {
         outputsMerged += 1
    -    val iter = taskResult.object2LongEntrySet.fastIterator()
    -    while (iter.hasNext) {
    -      val entry = iter.next()
    -      sums.put(entry.getKey, sums.getLong(entry.getKey) + 
entry.getLongValue)
    +    taskResult.foreach{ case (key,value) =>
    +      sums.changeValue(key, value, _ + value)
         }
       }
     
       override def currentResult(): Map[T, BoundedDouble] = {
         if (outputsMerged == totalOutputs) {
           val result = new JHashMap[T, BoundedDouble](sums.size)
    -      val iter = sums.object2LongEntrySet.fastIterator()
    -      while (iter.hasNext) {
    -        val entry = iter.next()
    -        val sum = entry.getLongValue()
    -        result(entry.getKey) = new BoundedDouble(sum, 1.0, sum, sum)
    +      sums.foreach{ case (key,sum) =>
    --- End diff --
    
    Put a space before the `{` and after the `,`


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to