给予
[{someField=this_object_seems_to_be_ok}]
场景1
val a = List(1,2,3).toDF("a")
val b = List(1,2,3).toDF("b")
方案2
a.filter(col("a").isNull).dropDuplicates().crossJoin(b).show()
// display empty data frame as expected
在方案2中,因为我没有从 val c = List().map(a => col(a))
a.select(c:_*).crossJoin(b).show()
// displays
+---+
| b|
+---+
| 1|
| 1|
| 1|
| 2|
| 2|
| 2|
| 3|
| 3|
| 3|
+---+
中选择任何列,然后进行交叉联接,所以我期望一个空的数据框。
场景3
a
我再次希望在方案3中有一个空的数据帧。但是,除了结果数据帧不为空之外,在方案2的情况下,似乎发生了 val c = List().map(a => col(a))
a.select(c:_*).dropDuplicates().crossJoin(b).show()
// displays
+---+
| b|
+---+
| 1|
| 2|
| 3|
+---+
。
我错过了一些琐碎的事情吗? dropDuplicates
以什么顺序发生?选择与空数据框没有什么不同吗?