Отбрасываются ли операции dropDuplicates и select после объединения, если ничего не выбрано? - PullRequest
1 голос
/ 08 ноября 2019

Дано

     val a = List(1,2,3).toDF("a")
     val b = List(1,2,3).toDF("b")

Сценарий 1

      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|
      +---+

В сценарии 2, поскольку я не выбираю столбец из a, а затемделая перекрестное соединение, я ожидал пустой фрейм данных.

Сценарий 3

       val c = List().map(a => col(a))
       a.select(c:_*).dropDuplicates().crossJoin(b).show()
       // displays
       +---+
       |  b|
       +---+
       |  1|
       |  2|
       |  3|
       +---+

Опять же, я ожидал пустой фрейм данных в Сценарии 3. Но в дополнение к результирующему фрейму данных не пустой* * * * * * * * * * * * * * * *

*1018* Я пропускаю что-то тривиальное. В каком порядке происходит select, join and dropDuplicates? Выбор ничего не отличается от пустого фрейма данных?

...