当前位置: 首页 > 知识库问答 >
问题:

左联接错误输出:org.apache.spark.sql.AnalysisException:检测到逻辑计划之间左联接的隐式笛卡尔积

梁鸣
2023-03-14

***编辑

df_joint = df_raw.join(df_items,on='x',how='left') 

Apache Spark 2.4.5中发生了标题为异常的异常

共有1个答案

毋宏茂
2023-03-14

可能是Spark中的一个bug,但如果只想添加列,可以执行以下操作:

import pyspark.sql.functions as F

df_joint = df_raw.select(
    '*',
    *[F.lit(None).alias(c) for c in df_items.columns if c not in df_raw.columns]
)
 类似资料:
  • 我正在尝试加入两个数据集 DS2: 当我执行下面的操作时,输出 但当我做下面的操作时,我会出错

  • 问题内容: 我知道SQL Server中的联接。 例如。有两个表Table1,Table2。 它们的表结构如下。 表1的数据如下: 表2数据如下: 如果我执行下面提到的两个SQL语句,则两个输出将是相同的 请在上述SQL语句中说明左右联接之间的区别。 问题答案: Select * from Table1 left join Table2 … 和 确实是完全可以互换的。但是,请尝试(或同一对)进行区

  • 问题内容: 我用多个(包括一个)编写了这个SQL请求。 它给了我预期的结果 。 但是,“ Id就像此请求的Linq等效项一样,将其放在应用程序的数据访问层中。 我尝试了类似的东西: 我试图适应这个问题,但我无法弄清楚。我对分组子请求的内部迷失了。 谁能解释我哪里错了? 专家提示:如果有人可以用lambda表达式编写等效项,则可获赠积分 问题答案: 要将SQL转换为LINQ查询理解: 将子选择转换为

  • 问题内容: 我们有下面的查询。使用LEFT OUTER联接需要9秒钟才能执行。将LEFT OUTER更改为LEFT INNER可以将执行时间减少到2秒,并且返回 相同 数量的行。由于正在处理dbo.Accepts表中相同数量的行,而不论联接类型如何,为什么外层要花3倍的时间? 问题答案: 返回相同行数的事实是事后事实,查询优化器无法预先知道Accepts中的每一行在Marker中都有匹配的行,可以

  • 问题内容: 我有这些表, 和。我想执行左外部联接。 劳斯莱斯 推出 SUMing,JOINing和GROUPings之后的预期输出==> 我的代码: 但是上面代码的O / P是 我不知道我要去哪里错了-你能解释一下吗? 问题答案: 您没有做错任何事。这就是JOIN的行为 它是左边的行数X右边的行数,在您的情况下为3 x 2 = 6。 试试这个 SQLFiddle 我知道这不适用于SQL Serve