apache-spark-sql - 在 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' right
,left
但我得到的回报是:
a | b | c | d | a | b | c | e |
我只得到标题的串联。
从逻辑的角度来看,我认为我的查询是正确的,我显然无法询问 Spark 如何执行连接。
任何提示?
解决方案
您可以使用以下方法加入。您只需要在它们对应时指定键列表
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")
推荐阅读
- html - 如果网格的宽度大于其父级的 100%,则带有粘性左列的 CSS 网格将被滚动
- javascript - 在 Javascript 中使用对象作为键时的奇怪行为
- unity3d - 是否可以将下载的游戏对象(使用assetbundle)保存为预制而不是 Unity3d 文件?
- python - 如何使用调度库运行异步函数?
- react-native - 使用没有标题的反应导航
- angular - 如何修复 ngModel 不能用于使用父 formGroup 指令注册表单控件
- chart.js - 如何关闭primeng饼图的工具提示?
- c++ - 您可以在指向不同模板类实例的指针之间进行转换吗?
- ios - iOS swift4,点击多个UITextFields,键盘显示,上移的UIButton不知道为什么下移了
- java - 我如何将某些内容写入 .txt 文件,然后稍后将其复制为字符串或数组?