左联接会导致火花中的交叉联接



我正在尝试使用 SQLContext 连接 pyspark 中的两个表:

create table joined_table stored 
as orc
as
SELECT  A.*,
        B.*
FROM TABLEA AS A
LEFT JOIN TABLEB AS B ON 1=1
where lower(A.varA) LIKE concat('%',lower(B.varB),'%')
AND (B.varC = 0 OR (lower(A.varA) = lower(B.varB)));

但是我收到以下错误:

AnalysisException: u'Detected cartesian product for LEFT OUTER join between logical plans
parquetnJoin condition is missing or trivial.nUse the CROSS JOIN syntax to allow cartesian products between these relations.;

编辑:

我在 Spark 中使用以下内容解决了这个问题:

conf.set('spark.sql.crossJoin.enabled', 'true')

这使得在 Pyspark 中交叉加入!

我看不到您的左连接中的 on 子句条件。不带连接条件的左连接将始终导致交叉连接。交叉联接将重复左侧表格的每一行,以重复右侧表格的每一行。 是否可以编辑查询并在联接键列中包含"ON"子句。

相关内容

  • 没有找到相关文章

最新更新