gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:53:52 26 4
gpt4 key购买 nike

是否可以使用单个过滤器操作将 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、文本和 JSON):
dfWithInd.write.partitionBy("ind").parquet(...)

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

但一般来说,不可能从单个转换中产生多个 RDDsDataFrames。见 How to split a RDD into two or more RDDs?

关于scala - 如何根据 Spark-scala 中的过滤器将数据集分为两部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37871223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com