Scala Spark SQL执行carthesian连接而不是内部连接

Scala Spark SQL执行carthesian连接而不是内部连接,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,在执行了一些早期的计算之后,我尝试将两个数据帧彼此连接起来。命令很简单: employee.join(employer, employee("id") === employer("id")) 然而,连接似乎执行carthesian连接,完全忽略我的===语句。有人知道为什么会发生这种情况吗?我想我也在为同样的问题而斗争。检查是否有警告: Constructing trivially true equals predicate [..] 在创建联接操作之后。如果是这样,只需在emplo

在执行了一些早期的计算之后,我尝试将两个数据帧彼此连接起来。命令很简单:

    employee.join(employer, employee("id") === employer("id"))

然而,连接似乎执行carthesian连接,完全忽略我的===语句。有人知道为什么会发生这种情况吗?

我想我也在为同样的问题而斗争。检查是否有警告:

Constructing trivially true equals predicate [..]
在创建联接操作之后。如果是这样,只需在employee或employer数据框中别名一列,例如:

employee.select(<columns you want>, employee("id").as("id_e"))
这对我来说不是一个很好的解决方案(很容易错过警告信息),我希望这会得到某种程度的解决


不过,您很幸运看到了警告消息;)

欢迎来到sonnamed。如果你需要帮助,你应该给我们一个机会:)好的开始是提供帮助。这真的是这样!谢谢在一个周末的大部分时间里,我都在努力解决1.5.2中的连接问题——这是两个问题之一,您的回答避免了很多挫折。非常感谢。不得不经历同样的挫折,直到我开始钻研Spark代码;)。好吧,即使在今天(2020年),它也不是固定不变的。有同样的问题。谢谢你,尼曼。节省了我很多时间。
    def === (other: Any): Column = {
    val right = lit(other).expr
    if (this.expr == right) {
      logWarning(
        s"Constructing trivially true equals predicate, '${this.expr} = $right'. " +
          "Perhaps you need to use aliases.")
    }
    EqualTo(expr, right)
  }