2016-05-20 9 views
0

Ich bekomme eine RDD mit 'Scan' Aktion von 'HBase'. Jedes Element in diesem RDD ist wie: x1, y1, y2, y3 ... So sind die Elemente in diesem RDD sind wie (jede Zeile eine Zeile Ergebnis der Scan-Aktion):Wie transformiert man ein Objekt in RDD (Spark) in viele Elemente in RDD?

  1. x1, y1, Y2, Y3
  2. x2, y1, y4, y8, y9
  3. x3, y5
  4. ......
  5. xn, y1, y6, Y100

I verwandeln wollen, dass diese RDD zu einer anderen RDD wie:

  1. x1, y1
  2. x1, y2
  3. x1, y3
  4. x2, y1
  5. x2, y4
  6. ...
  7. xn, y1
  8. xn, y6
  9. xn, y100

Wie kann ich diese Transformation machen?

+0

ich das zweite Element ist ein Tippfehler übernehmen ... und soll x1 statt x2 –

+0

ja, es ist ein Tippfehler sein. Ich modifiziere es. Vielen Dank ! @JustinPihony – York

Antwort

2

"flatMap that sh*t":

rdd.flatMap(x => { 
    val key = x.head 
    x.tail.map(y=>(key,y)) 
}) 
+0

Nein, es ist nicht einfach den Kopf mit jedem Element in den Schwanz zu kombinieren. Wenn Sie die letzten Beispiele beobachten, wird der 2. Punkt mit 'f (xn)' berechnet. – davidshen84

+0

@ davids84 Was lässt dich das denken? –

+0

Sorry, der 2. Artikel ist ein Tippfehler. Ich habe es bearbeitet. @ Davidshen84 – York