Об оптимизации spark Sql - левое соединение малого и большого стола - PullRequest
0 голосов
/ 28 февраля 2020
spark-sql --master yarn --driver-memory 10G --executor-memory 20G --executor-cores 20 --num-executors 20 

(Я подал заявку на ресурс выше. Прошу прощения за то, что я не подал заявку на ресурсы на пропорциональной основе ...)

sql следующим образом:

select 'ADDRESS',count(a.pid)
FROM (SELECT pa.pid
       FROM dmgr.ex_p10ids_address pa
      WHERE pa.pt IN ('20200227')
        AND pa.src_sys = 'APP0001'
        AND pa.endtime = '99991231999'
        AND pa.idtype NOT IN ('00')
        AND certificate_type(pa.idtype, 'P10IDS') <> '0') a
LEFT JOIN (SELECT pr.apid, pr.pid
           FROM p10ids_riskcon pr
          WHERE pr.classcode NOT IN
                ('26371100', '26371200', '26371300', '13770100', '26376000')) b
ON a.pid = b.apid
OR a.pid = b.pid;

- принимает 6 часов, 33 минуты, 15se c.

две таблицы sr c имеют разный порядок величин:

select count(1) from (SELECT count(pa.pid)
       FROM dmgr.ex_p10ids_address pa
      WHERE pa.pt IN ('20200227')
        AND pa.src_sys = 'APP0001'
        AND pa.endtime = '99991231999'
        AND pa.idtype NOT IN ('00')
        AND certificate_type(pa.idtype, 'P10IDS') <> '0' --group by pa.pid
        ) t; --46644 /group by:45094

select count(1) from(
SELECT pr.apid, pr.pid
           FROM p10ids_riskcon pr
          WHERE pr.classcode NOT IN
                ('26371100', '26371200', '26371300', '13770100', '26376000')
              --group by pr.apid, pr.pid
) t ; --14,9386,2737 / group by:4,8973,0113

Как сократить время работы? Что не так с моим искровым ресурсом sql? Надеюсь, что ваши комментарии ~

...