小编ped*_*ang的帖子

spark 2.4.0 为空右 DF 的左连接提供“检测到的隐式笛卡尔积”异常

似乎在 spark 2.2.1 和 spark 2.4.0 之间,具有空右数据帧的左连接的行为从成功更改为返回“AnalysisException:检测到逻辑计划之间的 LEFT OUTER 连接的隐式笛卡尔积”。

例如:

val emptyDf = spark.emptyDataFrame
  .withColumn("id", lit(0L))
  .withColumn("brand", lit(""))
val nonemptyDf = ((1L, "a") :: Nil).toDF("id", "size")
val neje = nonemptyDf.join(emptyDf, Seq("id"), "left")
neje.show()
Run Code Online (Sandbox Code Playgroud)

在 2.2.1 中,结果是

+---+----+-----+
| id|size|brand|
+---+----+-----+
|  1|   a| null|
+---+----+-----+
Run Code Online (Sandbox Code Playgroud)

但是,在 2.4.0 中,我收到以下异常:

org.apache.spark.sql.AnalysisException: Detected implicit cartesian product for LEFT OUTER join between logical plans
LocalRelation [id#278L, size#279]
and
Project [ AS brand#55]
+- LogicalRDD false
Join condition is missing or trivial.
Either: use …
Run Code Online (Sandbox Code Playgroud)

apache-spark-sql

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

apache-spark-sql ×1