我是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
from hive.adobe.tbl
and dt >= date '2017-05-15' and dt <= date '2017-06-13'
group by 1,2
假设您正在使用,Hive 可以将源数据写入按品牌存储桶的表,然后使用 WHERE "$bucket" % 32 = <N>
处理存储桶组。
否则,您可以将查询分段为 n 个查询,然后在每个查询中处理 1/n 的"品牌"。 您可以使用WHERE abs(from_big_endian_64(xxhash64(to_utf8(brand)))) % 32 = <N>
来划分品牌。