微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark join 删除连接列

如何解决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 的所有列。

所以输出应该包含mercded的所有列

解决方法

我能够使用以下连接条件解决

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");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。