如何过滤数据框,以便仅显示某些值?

时间:2019-03-15 08:39:21

标签: scala apache-spark

我有一个数据框df,其列为“ source,target,weight”,我需要使用scala(无SQL)命令来执行以下操作:

  1. 获取所有大于10的权重
  2. 删除所有重复的行。

对于1,我尝试了df.filter(“ weight> = 10”),但这不起作用

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

我正在使用this作为上述命令的参考。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

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

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|
+------+------+------+