【问题标题】:Spark join removes joining columnsSpark join 删除连接列
【发布时间】:2021-09-05 14:42:42
【问题描述】:

我有 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的所有列

【问题讨论】:

    标签: apache-spark apache-spark-sql apache-spark-dataset


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-26
      • 2018-04-07
      • 2019-07-03
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 2010-11-18
      • 1970-01-01
      相关资源
      最近更新 更多