title: Who can give a clear explanation for `combineByKey` in Spark?
body: <p>i am learning spark, but i can't understand this function <code>combineByKey</code>.</p>
  
  <pre><code>&gt;&gt;&gt; data = sc.parallelize([("A",1),("A",2),("B",1),("B",2),("C",1)] )
  &gt;&gt;&gt; data.combineByKey(lambda v : str(v)+"_", lambda c, v : c+"@"+str(v), lambda c1, c2 : c1+c2).collect()
  </code></pre>
  
  <p>The output is:</p>
  
  <pre><code>[('A', '1_2_'), ('C', '1_'), ('B', '1_2_')]
  </code></pre>
  
  <p>First, i am very confused: where is the <code>@</code> in second step <code>lambda c, v : c+"@"+v</code>? i can't find <code>@</code> from the result.</p>
  
  <p>Second, i read the function description for <code>combineByKey</code>, but i am confused the algorithm flow.</p>