Apache spark 如何删除Spark DataFrame中只有一列中具有相同值的行

Apache spark 如何删除Spark DataFrame中只有一列中具有相同值的行,apache-spark,apache-spark-sql,delete-row,Apache Spark,Apache Spark Sql,Delete Row,我有一个Spark的数据框,如下所示 *----------*-------* | Node ID | value | *----------*-------* | Node 1 | 0 | | Node 2 | 1 | | Node 3 | 0 | | Node 2 | 0 | *----------*-------* 是否有任何方法仅检测节点ID列中的相同节点ID值(例如,上面数据框中的节点2),并删除相同节点ID值的行,即使这些行在值列中

我有一个Spark的数据框,如下所示

*----------*-------*
|  Node ID | value |
*----------*-------*
|  Node 1  |   0   |
|  Node 2  |   1   |
|  Node 3  |   0   |
|  Node 2  |   0   |
*----------*-------*
是否有任何方法仅检测节点ID列中的相同节点ID值(例如,上面数据框中的节点2),并删除相同节点ID值的行,即使这些行在值列中不同。 例如,我可以输出一个像下面这样的新数据帧吗?在这个数据帧中,与原始数据帧相比,“NodeID=Node 2,value=1”行将被删除

*----------*-------*
|  Node ID | value |
*----------*-------*
|  Node 1  |   0   |
|  Node 3  |   0   |
|  Node 2  |   0   |
*----------*-------*

尝试使用带有过滤器的
窗口
功能来实现此目的

scala> var df = Seq(("Node 1" , 0),("Node 2" , 1),("Node 3",  0),("Node 2",  0)).toDF("NodeID","value")

scala> import org.apache.spark.sql.expressions.Window
scala> var win = Window.partitionBy("NodeID").orderBy("value")

scala> df.withColumn("result",row_number().over(win)).filter(col("result")<2).drop("result").orderBy("NodeId").show(9)
+------+-----+
|NodeID|value|
+------+-----+
|Node 1|    0|
|Node 2|    0|
|Node 3|    0|
+------+-----+
scala>var df=Seq((“节点1”,0),(“节点2”,1),(“节点3”,0),(“节点2”,0)).toDF(“节点ID”,“值”)
scala>导入org.apache.spark.sql.expressions.Window
scala>var-win=Window.partitionBy(“NodeID”).orderBy(“value”)

scala>df.withColumn(“result”,row_number().over(win)).filter(col(“result”)那么,您希望只保留值为0的数据,还是可以保留值为1的
Node2,删除值为0的
节点2
?您好,Saurabh。我不关心值,我只想删除具有相同节点ID的旧行和新行(例如,本例中的节点2)。