如何根据链接条件过滤Spark DataFrame?

时间:2018-10-10 09:08:32

标签: apache-spark apache-spark-sql

我正在尝试过滤类似于此的Spark DataFrame:

+-----+---+-----+-----+-----+-----+-------+
| name|age|key_1|key_2|key_3|key_4|country|
+-----+---+-----+-----+-----+-----+-------+
|  abc| 20|    1|    1|    1|    1|    USA|
|  def| 12|    2|    2|    3|    2|  China|
|  ghi| 40|    3|    3|    3|    3|  India|
|  jkl| 39|    4|    1|    4|    4|     UK|
+-----+---+-----+-----+-----+-----+-------+

基本上我想要实现的是找出哪些行具有不匹配的键,在这种情况下,我想获得第二行和第四行的新数据框。

我尝试过

val unmatching = df.filter(df.col("key_1").notEqual(df.col("key_2")).notEqual(df.col("key_3")).notEqual(df.col("key_4")))

我得到的是一个比原始数据集更短的数据集,但是密钥似乎相等。

1 个答案:

答案 0 :(得分:0)

  1. 找出匹配项
  2. 使用except()
    val matching=...
    val unmatching= df.except(matching);