0

Hier ist mein Datenrahmen enter image description hereSplit ein Funke Datenrahmen mit zeilenbegrenzer

Die Basis RDD, dass dieser Datenrahmen arbeitet an mit Index gezippt. Ich möchte diesen ursprünglichen Datenrahmen in mehrere Datenrahmen aufteilen, wobei das Trennzeichen auf der ersten Spaltenfolge basiert (z. B. "GCKN" in diesem Fall).

Ich gehe davon aus, wenn ich die einzelnen Datenrahmen, ich andere Werte als auch wie diese kombinieren ..

A             F  G 
GCKN:GCKN_cppr0/in:GCKN_cppr0/out:GCKN_cppr15/in.. -71 531 

Ist dies möglich. Was ist der beste Weg, dies zu tun?

+0

gefolgt gefunden werden Aggregatfunktion hier verwendet entfachen kann? Ich finde immer noch die Semantik heraus. Bitte lassen Sie mich wissen, wenn jemand es versucht hat. – user1384205

Antwort

0

Dank https://stackoverflow.com/a/32750733/1384205 konnte ich dies erreichen, indem Sie die RDD mit UDF zuordnen.

Zeilen-ID hinzugefügt. Dies wird die ID erhöht werden, wenn der Begrenzer

 .map(x => { 
      if(flag==true) cnt+=1 
      if(x.startsWith("GCKN,")){ flag=true } else flag=false  
      (cnt + "," + x) 
     }) 

von

val eprGroupedDF1 = eprDF1 
    .groupBy("sIndex") 
    .agg(GroupConcat(eprDF1.col("A")),sum("B").alias("B")) 
    .sort("sIndex")