繁体   English   中英

如何基于Spark-scala中的过滤器将数据集分为两部分

[英]How to divide dataset in two parts based on filter in Spark-scala

是否可以使用单个滤波器将DF分为两部分?

假设df有以下记录

UID    Col
 1       a
 2       b
 3       c

如果我做

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

如何在一次操作中将过滤后的记录和未过滤的记录保存在不同的RDD中?

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

如果您只对保存数据感兴趣,可以向DataFrame添加一个指示符列:

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

并将其用作DataFrameWriter的分区列,并使用一种受支持的格式(从1.6开始,它是Parquet,text和JSON):

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

它将在写入时创建两个单独的目录( ind=falseind=true )。

但是,一般而言,不可能从单个转换中产生多个RDDsDataFrames 请参阅如何将RDD分为两个或多个RDD?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM