我正在尝试执行对26列进行分组的查询。数据以按天划分的拼花格式存储在S3中。 Redshift Spectrum查询返回以下错误。我无法在aws中找到与此相关的任何文档。
S3查询层中的请求内存不足
答案 0 :(得分:2)
尝试将此表中的文本列声明为VARCHAR而不是STRING。另外,请确保为列使用最小的VARCHAR大小,以减少GROUP BY所需的内存。
另外,还有两个建议:
建议始终使用至少2个Redshift节点。这给 您是一个免费的领导节点,并允许您的计算节点使用所有 它们的RAM进行查询处理。
按这么多列分组是一种不寻常的查询模式。如果要在表中查找重复项,请考虑将列散列为单个值并在其上分组。这是一个示例:
SELECT MD5(ws_sold_date_sk
||ws_sold_time_sk
||ws_ship_date_sk
||ws_item_sk
||ws_bill_customer_sk
||ws_bill_cdemo_sk
||ws_bill_hdemo_sk
||ws_bill_addr_sk
||ws_ship_customer_sk
||ws_ship_cdemo_sk
||ws_ship_hdemo_sk
||ws_ship_addr_sk
||ws_web_page_sk
||ws_web_site_sk
||ws_ship_mode_sk)
, COUNT(*)
FROM spectrum.web_sales
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10
;