如果未选择任何内容,是否在联接后推送dropDuplicates和select操作?

给予

[{someField=this_object_seems_to_be_ok}]

场景1

     val a = List(1,2,3).toDF("a")
     val b = List(1,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以什么顺序发生?选择与空数据框没有什么不同吗?

sxdtzzf 回答:如果未选择任何内容,是否在联接后推送dropDuplicates和select操作?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3136365.html

大家都在问