微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Apache Spark Java 中,如何从某些字段不匹配的数据集中删除元素

如何解决在 Apache Spark Java 中,如何从某些字段不匹配的数据集中删除元素

我有一个数据集说:

a=1,b=2
a=2,b=3

...我想删除 a 具有相同值但 b 具有不同值的记录。在这种情况下,删除 a=2 处的两条记录。

我怀疑我需要为 groupBy a 然后某种过滤 where b != b

解决方法

我使用 Scala 完成了我的解决方案,只需遵循这个想法:

import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.{Window}

val df = sc.parallelize(Seq(
  (1,2),(2,3)
)).toDF("a","b")

val window = Window.partitionBy("a")
val newDF = (df
             .withColumn("count",count(lit(1)).over(window))
             .where(col("count") === lit(1))
             .drop("count"))

newDF.show

输出:

+---+---+
|  a|  b|
+---+---+
|  1|  2|
+---+---+

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。