Результаты левого соединения в перекрестном соединении в искре - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь объединить две таблицы в pyspark, используя SQLContext:

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

parquet\nJoin condition is missing or trivial.\nUse the CROSS JOIN syntax to allow cartesian products between these relations.;

Edit:

Я решил проблему с помощью следующего в Spark:

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

Включает перекрестное соединение в Pyspark!

1 Ответ

0 голосов
/ 11 января 2019

Я не вижу условия включения с вашим левым соединением. Левое соединение без условия соединения всегда приводит к перекрестному соединению. Перекрестное соединение будет повторять каждую строку вашей левой таблицы для каждой строки таблицы с правой стороны. Можете ли вы отредактировать свой запрос и включить предложение «ON» в свой столбец ключа объединения.

...