问题描述
我有 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");