我正在尝试使用 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"子句。