У меня есть HQL-запрос, который отлично работает, когда я запускаю его в dbeaver для моего экземпляра Hadoop (имена базы данных / таблицы отредактированы)
select * from (select DISTINCT UPPER(CONCAT(CONCAT(trim(lm.OriginCity),', '),trim(lm.OriginState))) as OriginCitySt
from <db1>.<table1> lm
LEFT JOIN <db2>.<table2> lt on trim(split(lt.lane, '-')[0]) = UPPER(CONCAT(CONCAT(trim(lm.OriginCity),', '),trim(lm.OriginState)))
WHERE lm.origincountry = 'US'
AND lt.lane IS NULL) a
union all
select * from (select distinct UPPER(CONCAT(CONCAT(trim(lm.DestinationCity),', '),trim(lm.DestinationState))) as DestCitySt
from <db1>.<table1> lm
LEFT JOIN <db2>.<table2> lt on trim(split(lt.lane, '-')[1]) = UPPER(CONCAT(CONCAT(trim(lm.DestinationCity),', '),trim(lm.DestinationState)))
WHERE lm.origincountry = 'US'
AND lt.lane IS NULL) b
У меня есть приложение на linux box, которое использует pyspark для подключения к улью и запуска этого запроса, но когда я делаю это, он застревает в строке, которая выглядит следующим образом.
Когда я удаляю левое соединение из запроса и оно просто будет следующим:
select * from (select DISTINCT UPPER(CONCAT(CONCAT(trim(lm.OriginCity),', '),trim(lm.OriginState))) as OriginCitySt
from <db1>.<table1> lm
WHERE lm.origincountry = 'US') a
union all
select * from (select distinct UPPER(CONCAT(CONCAT(trim(lm.DestinationCity),', '),trim(lm.DestinationState))) as DestCitySt
from <db1>.<table1> lm
WHERE lm.origincountry = 'US') b
Работает просто отлично. Итак, я знаю, что объединение является проблемой, и я почти уверен, что это часть «trim (split (lt.lane, '-') [0])», но вопрос в том, почему?