除了特定列Spark 1.6之外

时间:2018-03-11 11:59:43

标签: apache-spark dataframe apache-spark-sql

我正在尝试使用dfB过滤掉dfA中的行。

DFA:

+----+---+----+------------+-----+
|year|cid|X|        Y|Z|
+----+---+----+------------+-----+
+----+---+----+------------+-----+.

DFB:

+----+---+
|year|cid|
+----+---+
+----+---+

我的目标是用dfA填充dfB中的所有情侣year cid

我认为这是一个明显的例外情况:

dfA.except(dfB)

但是我需要DF中的列数相同。 有没有办法执行除特定列上的操作? 或者应该完全走另一条道路。

1 个答案:

答案 0 :(得分:4)

不,我不认为这适用于except。你需要的是一个左反连接:

dfA.join(dfB,Seq("year","cid"),"leftanti")

在火花2之前,这应该做同样的

dfA.join(dfB.withColumn("b",lit(1)),Seq("year","cid"),"left")
  .where($"b".isNull).drop($"b")