【发布时间】:2020-02-17 15:03:36
【问题描述】:
我正在开发一个 spark 程序,它基本上是在尝试合并以下两个表:
表1
+---+---+---+
| a | b | c |
+---+---+---+
| 1 | 2 | 6 |
| 4 | 5 | 6 |
+---+---+---+
表2:
+---------+-----+--------+
|Attribute|Value|Validity|
+---------+-----+--------+
| A | 1 | false |
| A | 4 | false |
| B | 2 | false |
| B | 5 | false |
| C | 6 | true |
+---------+-----+--------+
我想查找每个(属性,值)对是否有效。 基本上,包含我需要的所有信息的结果表可能如下所示:
+-+-+-+---------+---------+---------+
|A|B|C|ValidityA|ValidityB|ValidityC|
+-+-+-+---------+---------+---------+
|1|2|6| false | false | true |
|4|5|6| false | false | true |
+-+-+-+---------+---------+---------+
在对表进行一些预处理后,例如通过三重连接可以实现上述表。但是三重连接对我来说似乎非常低效,因为我正在使用大数据。 此外,我必须使用循环来单独执行每个连接,这也是我不想要的。
有人知道用单个查询来存档上述结果的方法吗(额外的预处理和对表的简单更改没问题)?
我无法让格式正常工作,抱歉。
亲切的问候
-巴里
【问题讨论】:
-
您可以转置 table1 并使用 pivot 执行单个连接。
标签: sql apache-spark apache-spark-sql bigdata rdd