Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 环路预调_Performance_Loops_Memory_Presto - Fatal编程技术网

Performance 环路预调

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

我是新来普雷斯托的,我想知道是否有任何方法可以实现循环。我有一个按日期聚合一些数据的查询,当我运行它时,它抛出一个错误:超出了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
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=
来确定品牌