在 Apache Spark Java 中,如何从某个字段不匹配的数据集中删除元素
In Apache Spark Java how can I remove elements from a dataset where some field does not match
我有一个数据集说:
a=1, b=2
a=2, b=2
a=2, b=3
...我想删除 a
具有相同值但 b
具有不同值的记录。在这种情况下,删除 a=2
.
的两条记录
我怀疑我需要为 a
groupBy
然后进行某种过滤 b != b
.
我用scala做了我的解决方案,只要遵循这个想法:
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.{Window}
val df = sc.parallelize(Seq(
(1, 2),
(2, 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|
+---+---+
我有一个数据集说:
a=1, b=2
a=2, b=2
a=2, b=3
...我想删除 a
具有相同值但 b
具有不同值的记录。在这种情况下,删除 a=2
.
我怀疑我需要为 a
groupBy
然后进行某种过滤 b != b
.
我用scala做了我的解决方案,只要遵循这个想法:
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.{Window}
val df = sc.parallelize(Seq(
(1, 2),
(2, 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|
+---+---+