我正在使用Spark 2.0.0和DataFrames API(DataSet [Row])来连接一些数据帧,如下所示。我想从使用和激活中获取所有行(因此是完整的外部联接),然后对结果数据集执行内部联接,以便我只考虑在appDetails数据集中也具有相应行的行(因此内部加入)。
val result = usages
.join(activations, Seq("DATE", "APP_ID"), "outer")
.join(appDetails, Seq("APP_ID"), "inner")
此查询不会返回任何结果。但是,如果我将完整的外连接更改为左外连接,就像这样,它会返回结果。
val result = usages
.join(activations, Seq("DATE", "APP_ID"), "left")
.join(appDetails, Seq("APP_ID"), "inner")
然而,这对我不起作用,因为我也希望激活表中的所有行。这里发生了什么事?为什么在这种情况下,完全外连接不能按预期工作?