Spark SQL中的OUTER和FULL_OUTER之间有区别吗?



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

必须是:内部,交叉,外部,完整,full_outer,左,左, left_outer,右,right_outer,left_semi和left_anti。

spark sql join()

outerfull_outer之间是否有区别?我怀疑不是,我怀疑它们只是彼此的同义词,但想变得清晰。

outerfull_outer之间没有区别 - 它们是相同的。请参阅以下答案以进行演示:Spark中的各种连接类型是什么?

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

所以火花确实支持:内部,fullouter,左路,右路,左派,左手,左侧和十字架。

快速示例,给定:

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

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

相关内容

  • 没有找到相关文章

最新更新