def aggregate_by_key(zero_value, seq_func, comb_func, num_partitions=nil)
      _combine_by_key(
        [Spark::Command::CombineByKey::CombineWithZero, zero_value, seq_func],
        [Spark::Command::CombineByKey::Merge, comb_func],
        num_partitions
      )
    end
def aggregate_by_key(zero_value, seq_func, comb_func, num_partitions=nil)
      _combine_by_key(
        [Spark::Command::CombineByKey::CombineWithZero, zero_value, seq_func],
        [Spark::Command::CombineByKey::Merge, comb_func],
        num_partitions
      )
    end
Aggregate the values of each key, using given combine functions and a neutral zero value.

 == Example:
   def combine(x,y)
     x+y
   end

   def merge(x,y)
     x*y
   end

   rdd = $sc.parallelize([["a", 1], ["b", 2], ["a", 3], ["a", 4], ["c", 5]], 2)
   rdd.aggregate_by_key(1, method(:combine), method(:merge))
   # => [["b", 3], ["a", 16], ["c", 6]]