【问题标题】:Is there a difference between OUTER & FULL_OUTER in Spark SQL?Spark SQL 中的 OUTER 和 FULL OUTER 有区别吗?
【发布时间】:2017-10-02 09:37:38
【问题描述】:

Spark SQL 文档指定 join() 支持以下连接类型:

必须是以下之一:inner、cross、outer、full、full_outer、left、 left_outer、right、right_outer、left_semi 和 left_anti。

Spark SQL Join()

outerfull_outer 有什么区别吗?我怀疑不是,我怀疑它们只是彼此的同义词,但想弄清楚。

【问题讨论】:

    标签: apache-spark apache-spark-sql spark-dataframe


    【解决方案1】:

    outerfull_outer 之间没有区别 - 它们是相同的。请参阅以下答案进行演示:What are the various join types in Spark?

    【讨论】:

      【解决方案2】:

      Spark v2.4.0 加入代码(_ 已被抑制):

      case "inner" => Inner
      case "outer" | "full" | "fullouter" => FullOuter
      case "leftouter" | "left" => LeftOuter
      case "rightouter" | "right" => RightOuter
      case "leftsemi" => LeftSemi
      case "leftanti" => LeftAnti
      case "cross" => Cross
      

      所以 Spark 确实支持:Inner、FullOuter、LeftOuter、RightOuter、LeftSemi、LeftAnti 和 Cross。

      简单的例子,给出:

      +---+-----+
      | id|value|
      +---+-----+
      |  1|   A1|
      |  2|   A2|
      |  3|   A3|
      |  4|   A4|
      +---+-----+
      

      和:

      +---+-----+
      | id|value|
      +---+-----+
      |  3|   A3|
      |  4|   A4|
      |  4| A4_1|
      |  5|   A5|
      |  6|   A6|
      +---+-----+
      

      你得到:

      外连接

      +----+-----+----+-----+
      |  id|value|  id|value|
      +----+-----+----+-----+
      |null| null|   5|   A5|
      |null| null|   6|   A6|
      |   1|   A1|null| null|
      |   2|   A2|null| null|
      |   3|   A3|   3|   A3|
      |   4|   A4|   4|   A4|
      |   4|   A4|   4| A4_1|
      +----+-----+----+-----+
      

      FULL_OUTER JOIN

      +----+-----+----+-----+
      |  id|value|  id|value|
      +----+-----+----+-----+
      |null| null|   5|   A5|
      |null| null|   6|   A6|
      |   1|   A1|null| null|
      |   2|   A2|null| null|
      |   3|   A3|   3|   A3|
      |   4|   A4|   4|   A4|
      |   4|   A4|   4| A4_1|
      +----+-----+----+-----+
      

      【讨论】:

        猜你喜欢
        • 2011-03-14
        • 2013-03-10
        • 2016-08-28
        • 2011-09-28
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        相关资源
        最近更新 更多