首页 > 解决方案 > 在 spark sql (java) 中加入两个数据集

问题描述

我有 2Dataset秒,每列有 4 列。

我的数据集:

'left':
a | b | c | d 
1 | 2 | 3 | 4

'right':
a | b | c | e 
1 | 2 | 3 | 5

我想达到的目标:

a | b | c | d | e 
1 | 2 | 3 | 4 | 5

我的代码:

left.join(right,left.col(a).equalTo(right.col(a))
                        .and(left.col(b).equalTo(right.col(b)))
                        .and(left.col(c).equalTo(right.col(c)))
                        )),"left");

我想从 to 添加列'e' rightleft但我得到的回报是:

a | b | c | d | a | b | c | e |

我只得到标题的串联。
从逻辑的角度来看,我认为我的查询是正确的,我显然无法询问 Spark 如何执行连接。
任何提示?

标签: apache-spark-sql

解决方案


您可以使用以下方法加入。您只需要在它们对应时指定键列表

val df1 = Seq(
  (1, 2, 3, 4)
).toDF("a", "b", "c", "d")
val df2 = Seq(
  (1, 2, 3, 4)
).toDF("a", "b", "c", "e")

val df3 = df1.join(df2, Seq("a", "b", "c"), "left")

推荐阅读