【发布时间】:2017-10-13 03:13:27
【问题描述】:
我在这里阅读了很多问答,但仍然找不到我的问题的答案。
我的问题是,即使里面有重复的值,我能找出两个数据集的交集吗?
下面的代码显示,对于重复值,数据集 t5 将无法显示其相对于数据集 t2 的额外元素“2”。
例如,我想得到类似 t5 - t2 = (1, 2) 的东西。 但是,我只能从以下代码中得到 t5 - t2 = (1):
val t1 = Seq(1, 2, 3).toDS()
val t2 = Seq(2, 3).toDS()
val t3 = Seq(3, 4).toDS()
val t4 = Seq(4, 5 ).toDS()
val t5 = Seq(1, 2, 2, 3).toDS()
val t6 = Seq(2, 2, 3).toDS()
t1.intersect(t2).show()
> 2 3
t1.intersect(t3).show()
> 3
t1.intersect(t4).show()
> null
t1.union(t2).except(t1.intersect(t2))
> 1
t5.intersect(t2).show()
> 2 3
t5.intersect(t6).show()
> 2 3
t5.except(t2).show()
>1
t5.except(t6).show()
>1
t5.union(t2).except(t5.intersect(t2))
>1
t5.union(t6).except(t5.intersect(t6))
>1
t5.join(t2, t5("value") === t2("value"), "leftanti").show()
>1
【问题讨论】:
-
寻找类似this 的东西?
-
@eliasah 谢谢你的链接。我检查了一下,发现情况并非如此。处理重复键时,链接中的解决方案也有问题。问题是由“join”引入的,它也会考虑重复。
-
@eliasah 尝试答案后,我将结果添加到问题中。它还返回 (1)
标签: scala apache-spark apache-spark-dataset