我在Spark dataframes中似乎遇到了一个bug。我用的是火花2.3.1。我已经抓了好几天的头了,我不知道为什么两种过滤不想要的数据的方法会有不同的原因,除了左撇子。
看来,除了函数实际上是一个不同的例外!除在其上调用的数据外,任何重复的都会被删除。
只是想提供这个信息,以防其他人遇到同样的问题!运行the函数将导致结果数据中的唯一数据。要保存原始数据,请确保使用左撇子!
发布于 2018-09-24 03:17:47
似乎.except()
与2.3.0一样充当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
步骤来删除重复项。
https://stackoverflow.com/questions/52471628
复制相似问题