title: pyspark: split a single RDD to multiple RDD by value
body: <p>I cannot find answer.
  If I have RDD</p>
  
  <pre><code>rdd = sc.parallelize([('a', [1,2,3]), ('b',[4,5,6])])
  </code></pre>
  
  <p>where each value is a list.
  Are there ways to split the RDD, such that it becomes</p>
  
  <pre><code>sc.parallelize([('a',1),('a',2),('a',3),('b',4),('b',5),('b'6)])
  </code></pre>
  
  <p>where now each value is one of element of the lists, and match the key.
  I roughly know the solution. We can first <code>collect()</code></p>
  
  <pre><code>a = rdd.collect()
  </code></pre>
  
  <p>and then reassign a RDD as </p>
  
  <pre><code>rdd2 = sc.parallelize([x for x in a])
  </code></pre>
  
  <p>But if RDD is huge, the <code>collect()</code> will be very time consuming. We have to think about it by scale. Are there any distributed ways to do it? (like using <code>lambda function</code> .. etc) Thanks!</p>