如何在Spark scala中基于过滤器将数据集分成两部分
是否可以使用单个过滤器操作将DF分为两部分。例如 假设df有以下记录如何在Spark scala中基于过滤器将数据集分成两部分,scala,apache-spark,Scala,Apache Spark,是否可以使用单个过滤器操作将DF分为两部分。例如 假设df有以下记录 UID Col 1 a 2 b 3 c 如果我这样做 df1 = df.filter(UID <=> 2) 如果您只对保存数据感兴趣,可以在数据框中添加一个指示符列: val df = Seq((1, "a"), (2, "b"), (3, "c")).toDF("uid", "col") val dfWithInd = df.withColumn("ind",
UID Col
1 a
2 b
3 c
如果我这样做
df1 = df.filter(UID <=> 2)
如果您只对保存数据感兴趣,可以在数据框中添加一个指示符列:
val df = Seq((1, "a"), (2, "b"), (3, "c")).toDF("uid", "col")
val dfWithInd = df.withColumn("ind", $"uid" <=> 2)
它将在写入时创建两个单独的目录(ind=false
,ind=true
)
但是,一般来说,不可能从单个转换中产生多个rdd
或DataFrames
。看
val df = Seq((1, "a"), (2, "b"), (3, "c")).toDF("uid", "col")
val dfWithInd = df.withColumn("ind", $"uid" <=> 2)
dfWithInd.write.partitionBy("ind").parquet(...)