我现在正尝试从Hive表中提取一些数据,并将它们放到一个新表中。步骤是:将带有其他信息的transactionid拉到一张表中;使用transactionid与另一个表联接以获得完整的url信息。
我构建了可以满足我的需求的查询,但是它的运行速度非常慢。它运行了30分钟以上,没有显示任何结果。 (我需要在15分钟内完成)Vertica中的相同查询应该能够在5分钟内完成。需要找到一些方法来加快查询速度。
-将相关的搜索网址分隔为行
DROP TABLE IF EXISTS bi_etl.tblrelatedsearch;
CREATE TABLE bi_etl.tblrelatedsearch AS
select eventdate
,coalesce(referringtransactionid, transactionid) as transactionid
,deviceguid
,platform
,storeid
,relatedurl
FROM scribe.tblscriberelatedsearchresults LATERAL view explode (anchorurls) adTable as relatedurl
where eventdate >= '2019-10-15'
and storeid in (49,446,368,321,81,422,450,457)
;
-- with pagetype version
DROP TABLE IF EXISTS bi_etl.tblrelatedsearchpg;
CREATE TABLE bi_etl.tblrelatedsearchpg as
select a.eventdate
,a.transactionid
,a.platform
,a.storeid
,b.requesturl
,b.pagetype
,a.relatedurl
,case when
a.url ilike '%keywork%' then 'Keyword'
when
a.url ilike '%sb0%' then 'SB'
when
a.url ilike '%sb1%' then 'SB'
when
a.url ilike '%sb2%' then 'SB'
when
a.url ilike '%sb3%' then 'SB'
when
a.url ilike '%ideas-and-advice%' then 'IDEAS & ADVICE'
when
a.url ilike '%top-rated%' then 'Top Rated'
else 'ELSE' end
as relatedpagetype
from bi_etl.tblrelatedsearchs a
left join scribe.tblscribepagerequest b
on a.eventdate = b.eventdate
and a.transactionid = b.transactionid
and a.deviceguid = b.deviceguid
where b.eventdate >= '2019-10-15'
and b.storeid in (49,446,368,321,81,422,450,457)
;
优化查询,使其在Hive中更快。