【发布时间】:2020-03-10 10:50:07
【问题描述】:
我有两张表,每张有 2 列,一个 id 列和一个收入列。我已经使用完全外连接连接了两个表,执行以下操作:
val income = incomeA.join(incomeB, incomeA("idA") === incomeB("idB"), "full")
产生以下集合:
+--------------------+----------+--------------------+----------+
| idA | A_INCOME| idB | B_INCOME|
+--------------------+----------+--------------------+----------+
|0d4f671c-552b-449...| 2250| null| null|
|9e03f92e-af0e-416...| 1250| null| null|
| null| null|c75d0d17-f3c1-497...| 4300|
|02572d79-bc54-427...| 2880| null| null|
| null| null|ca493eca-0709-4db...| 2320|
|cb7831ac-2550-435...| 1650| null| null|
|da7ac4c4-403b-466...| 2250| null| null|
|9bddb7b5-0047-4e1...| 5170| null| null|
| null| null|b54fc648-5f00-411...| 800|
|7aeade0a-47d4-459...| 4250| null| null|
|4fde8deb-a7de-45a...| 1650| null| null|
+--------------------+----------+--------------------+----------+
但我希望最终结果包含 3 列,而不是上面的,一个 id 列同时包含 idA 和 idB 以及两个收入列,如下所示:
+--------------------+----------+----------+
| id | A_INCOME| B_INCOME|
+--------------------+----------+----------+
|0d4f671c-552b-449...| 2250| null|
|9e03f92e-af0e-416...| 1250| null|
|c75d0d17-f3c1-497...| null| 4300|
|02572d79-bc54-427...| 2880| null|
|ca493eca-0709-4db...| null| 2320|
|cb7831ac-2550-435...| 1650| null|
|da7ac4c4-403b-466...| 2250| null|
|9bddb7b5-0047-4e1...| 5170| null|
|b54fc648-5f00-411...| null| 800|
|7aeade0a-47d4-459...| 4250| null|
|4fde8deb-a7de-45a...| 1650| null|
+--------------------+----------+----------+
该表本质上应该是对该数据框进行完全左连接和完全右连接的结果。有没有办法做到这一点?你会如何处理这个问题?非常感谢!
【问题讨论】:
-
我删除了 MySQL 标签。它不支持
full join,所以你不能使用那个数据库。
标签: sql scala apache-spark aws-glue