apache-spark - Spark join 删除连接列
问题描述
我有 2 个要执行连接的数据集。数据集 merc 和 ded 都具有相同的架构。
架构:id、mid、pid、zid
List<String> joinSeqList = Lists.newArrayList("id","mid");
Dataset<Row> dataDF = merc.as("merc")
.join(ded.as("ded"),
convertListToSeq(joinSeqList),
"fullouter");
private Seq<String> convertListToSeq(List<String> inputList) {
return scala.collection.JavaConversions.asScalaBuffer(inputList).seq();
}
我面临的问题是生成的架构具有所有列,merc
但不是所有列ded
。来自 ded 的 id 和 mid 在最终模式中不存在(它们是连接列)。
既然我得到了所有的列merc
,我怎么能得到所有的列ded
。
所以输出应该包含所有列merc
和ded
解决方案
我能够使用以下连接条件解决
Dataset<Row> dataDF = merc.as("merc")
.join(ded.as("ded"),col("merc.id").equalTo(col("ded.id")).and(
col("merc.mid").equalTo(col("ded.mid"))), "outer");
推荐阅读
- python - ImportError:无法从“conda._vendor.tqdm”(未知位置)导入名称“tqdm”
- javascript - Angular viewChild 获取由 *ngIf="asynchronous variable" 嵌套的 DOM 元素
- mysql - 运行 migrate.py 时出现 Django 和 MeMSQL 错误:django.db.utils.OperationalError:(2012,“服务器握手错误”)
- python-3.x - 编写一个显示 15 个近似值的列表
- html - 如何为 CSS 中的单个字体设置不同的大小?
- c - 使用两个受限操作检查整数是否为 0
- excel - 在不同的单元格中搜索文本并使用 Excel 在一个单元格中添加所有结果
- python - 如何仅从单词中生成有意义的句子?
- c - strtoull() 在 C89 中的可用性
- firebase - Firebase 数据库更新创建重复节点