Spark SQL文档指定join()
支持以下连接类型:
必须是以下之一:内部,十字架,外部,全部,全部,左, left_outer,right,right_outer,left_semi和left_anti。
outer
和full_outer
之间有什么区别吗?我怀疑没有,我怀疑他们只是对方的同义词,但想要明白。
答案 0 :(得分:1)
outer
和full_outer
之间没有区别-它们是相同的。请参见以下答案以进行演示:What are the various join types in Spark?
答案 1 :(得分:1)
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真正支持:内部,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加入
+----+-----+----+-----+
| 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|
+----+-----+----+-----+