Wil*_*llD 22 scala apache-spark apache-spark-sql
在SparkSQL1.6 API(scala)中Dataframe有交叉和除外的函数,但不是一个用于区别的函数.显然,union和except的组合可用于产生差异:
df1.except(df2).union(df2.except(df1))
Run Code Online (Sandbox Code Playgroud)
但这似乎有点尴尬.根据我的经验,如果某些东西看起来很尴尬,那么有更好的方法,特别是在Scala中.
zer*_*323 36
您始终可以将其重写为:
df1.unionAll(df2).except(df1.intersect(df2))
Run Code Online (Sandbox Code Playgroud)
认真虽然这UNION,INTERSECT和EXCEPT/ MINUS几乎是一个标准的SQL集合结合运算符.我不知道任何系统提供开箱即用的XOR操作.很可能是因为使用其他三个实现它是微不足道的,并且没有太多优化.
为什么不下面呢?
df1.except(df2)
Run Code Online (Sandbox Code Playgroud)