scala 将 Dataframe 拆分为两个 Dataframe

guz6ccqo  于 2022-11-09  发布在  Scala
关注(0)|答案(1)|浏览(271)

我有一个日期框,其中有唯一的以及重复的记录在数字的基础上。现在,我想将 Dataframe 拆分成两个 Dataframe 。在第一个 Dataframe 中,我只需要复制唯一的行,而在第二个 Dataframe 中,我需要所有重复的行。例如

id   name     number
     1    Shan     101
     2    Shan     101
     3    John     102
     4    Michel   103

这两个拆分的 Dataframe 应该如下所示
独一

id    name    number
      3     John    102
      4     Michel  103

重复

id   name     number
      1    Shan     101
      2    Shan     101
zujrkrfu

zujrkrfu1#

你尝试过的解决方案很可能会让你成功。
您的数据如下所示

val df = sc.parallelize(Array(
     (1, "Shan",     101),
     (2, "Shan", 101),
     (3, "John", 102),
     (4, "Michel", 103)
     )).toDF("id","name","number")

然后你自己建议分组和计算。如果你这样做的话

val repeatedNames = df.groupBy("name").count.where(col("count")>1).withColumnRenamed("name","repeated").drop("count")

然后,你实际上可以通过之后做这样的事情来得到所有的东西:

val repeated = df.join(repeatedNames, repeatedNames("repeated")===df("name")).drop("repeated")

 val distinct = df.except(repeated)

 repeated show
+---+----+------+
| id|name|number|
+---+----+------+
|  1|Shan|   101|
|  2|Shan|   101|
+---+----+------+

 distinct show
+---+------+------+
| id|  name|number|
+---+------+------+
|  4|Michel|   103|
|  3|  John|   102|
+---+------+------+

希望能有所帮助。

相关问题