2016-06-17 4 views
1

Ist es möglich, DF in zwei Teile zu teilen einzigen Filter mit operation.For BeispielWie Daten-Set in zwei Teile teilen, basierend auf Filter in Funken scala

Lassen Sie sagen, df hat unter Aufzeichnungen

UID Col 
1  a 
2  b 
3  c 

wenn ich

df1 = df.filter(UID <=> 2) 

kann ich sparen gefiltert und nicht-gefilterten Datensätze in verschiedenen RDD im Einzelbetrieb ?

df1 can have records where uid = 2 
df2 can have records with uid 1 and 3 

Antwort

3

Wenn Sie nur daran interessiert sind Daten in Speichern können Sie eine Anzeigesäule zum DataFrame hinzufügen:

val df = Seq((1, "a"), (2, "b"), (3, "c")).toDF("uid", "col") 
val dfWithInd = df.withColumn("ind", $"uid" <=> 2) 

und als Trennwandkolonne für die DataFrameWriter mit einem der unterstützten Formate (wie für 1.6 ist es Parkett, Text und JSON):

dfWithInd.write.partitionBy("ind").parquet(...) 

es zwei separate Verzeichnisse werden (ind=false, ind=true) auf schreiben.

Im Allgemeinen ist es jedoch nicht möglich, mehrere RDDs oder DataFrames aus einer einzigen Transformation zu erhalten. Siehe How to split a RDD into two or more RDDs?

Verwandte Themen