Performance 环路预调
我是新来普雷斯托的,我想知道是否有任何方法可以实现循环。我有一个按日期聚合一些数据的查询,当我运行它时,它抛出一个错误:超出了30GB的最大内存大小。 如果循环不是一个选项,我可以使用其他建议 我正在使用的查询:Performance 环路预调,performance,loops,memory,presto,Performance,Loops,Memory,Presto,我是新来普雷斯托的,我想知道是否有任何方法可以实现循环。我有一个按日期聚合一些数据的查询,当我运行它时,它抛出一个错误:超出了30GB的最大内存大小。 如果循环不是一个选项,我可以使用其他建议 我正在使用的查询: select dt as DATE_KPI,brand,count(distinct concat(cast(post_visid_high as varchar), cast(post_visid_low as varchar)))as kpi_value fro
select dt as DATE_KPI,brand,count(distinct concat(cast(post_visid_high as varchar),
cast(post_visid_low as varchar)))as kpi_value
from hive.adobe.tbl
and dt >= date '2017-05-15' and dt <= date '2017-06-13'
group by 1,2
选择dt作为日期、KPI、品牌、计数(不同的concat(cast)(访问后高达varchar),
将(post_visid_low as varchar))转换为kpi_值
来自hive.adobe.tbl
和dt>=日期“2017-05-15”和dt假设您正在使用Hive,您可以将源数据写入带扣的表中,然后使用处理桶组,其中“$bucket”%32=
否则,您可以将查询分为n个查询,然后在每个查询中处理1/n的“品牌”。您可以使用WHERE abs(从\u big\u endian_64(xxhash64(到\u utf8(品牌)))%32=
对品牌进行标记。假设您使用的是Hive,您可以将源数据写入以品牌为标记的表中,然后使用WHERE“$bucket”%32=
处理桶组
否则,您可以将查询分为n个查询,然后在每个查询中处理1/n的“品牌”。您可以使用WHERE abs(从\u big\u endian\u 64(xxhash64(到\u utf8(品牌)))%32=
来确定品牌