Scala 如何过滤数据帧,以便只显示某些值?

Scala 如何过滤数据帧,以便只显示某些值?,scala,apache-spark,Scala,Apache Spark,我有一个dataframe df,包含source、target、weight列,我需要使用scala no-SQL命令来: 让所有重量超过10磅,然后 删除所有重复的行。 对于1,我尝试了df.filterweight>=10,但这不起作用 对于2,我尝试了df.dropDuplicates,但这也不起作用 我使用作为上述命令的参考 我做错了什么 您以错误的方式使用筛选器,请查看下面的代码片段以了解 import sparkSession.implicits._ val dataframe

我有一个dataframe df,包含source、target、weight列,我需要使用scala no-SQL命令来:

让所有重量超过10磅,然后 删除所有重复的行。 对于1,我尝试了df.filterweight>=10,但这不起作用

对于2,我尝试了df.dropDuplicates,但这也不起作用

我使用作为上述命令的参考

我做错了什么

您以错误的方式使用筛选器,请查看下面的代码片段以了解

import sparkSession.implicits._

val dataframe = Seq(("x", 20, 10), ("y", 30, 20), ("y", 30, 20), ("z", 10, 20)).toDF("source", "target", "weight")

val result1 = dataframe.filter($"weight" > 10)
val result2 = dataframe.filter($"weight" > 10).dropDuplicates()

dataframe.show
result1.show
result2.show
输出是

+------+------+------+
|source|target|weight|
+------+------+------+
|     x|    20|    10|
|     y|    30|    20|
|     y|    30|    20|
|     z|    10|    20|
+------+------+------+

+------+------+------+
|source|target|weight|
+------+------+------+
|     y|    30|    20|
|     y|    30|    20|
|     z|    10|    20|
+------+------+------+

+------+------+------+
|source|target|weight|
+------+------+------+
|     y|    30|    20|
|     z|    10|    20|
+------+------+------+

你说那不起作用是什么意思?与.filterweight>=10无关,但如何将其重新格式化为原始df?我是否必须执行dataframe=dataframe.filter$weight>10.show?