![](/img/trans.png)
[英]Apache Spark - 'LeftAnti' join Ambiguous column error
[英]Spark Java except method vs. leftanti join returning inconsistent results, possible bug?
Spark数据框Java API中似乎遇到了一个错误。 我正在使用spark 2.3.1。 我已经花了好几天的时间挠头,我不知道为什么使用除vs. leftanti过滤掉不需要的数据的两种方法之间的结果会有所不同的原因。
看来,except函数实际上是一个与众不同的except! 除之外调用的数据帧将删除所有重复项!
只是想提供此信息,以防其他人遇到同样的问题! 运行except函数会在结果数据框中生成唯一数据。 要保留原始数据,请确保使用leftanti!
似乎从2.3.0开始 , .except()
充当EXCEPT DISTINCT
操作。 前面提到EXCEPT
文档是不正确的,因为该行为始终是EXCEPT DISTINCT
如果您比较leftanti
计划
== Physical Plan ==
*BroadcastHashJoin [value#1], [value#4], LeftAnti, BuildRight
:- LocalTableScan [value#1]
+- BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]))
+- LocalTableScan [value#4]
和except()
:
== Physical Plan ==
*HashAggregate(keys=[value#1], functions=[])
+- Exchange hashpartitioning(value#1, 200)
+- *HashAggregate(keys=[value#1], functions=[])
+- *BroadcastHashJoin [coalesce(value#1, )], [coalesce(value#4, )], LeftAnti, BuildRight, (value#1 <=> value#4)
:- LocalTableScan [value#1]
+- BroadcastExchange HashedRelationBroadcastMode(List(coalesce(input[0, string, true], )))
+- LocalTableScan [value#4]
您可以看到还有其他的HashAggregate
步骤可以删除重复项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.