Redshift Spectrum 查询 - 请求 运行 S3 查询层内存不足
Redshift Spectrum Query - Request ran out of memory in the S3 query layer
我正在尝试对 26 列进行分组来执行查询。数据以按天分区的镶木地板格式存储在 S3 中。 Redshift Spectrum 查询返回以下错误。我无法在 aws 中找到与此相关的任何文档。
Request ran out of memory in the S3 query layer
- table 中的总行数:7.7 亿
- Parquet 格式 table 的总大小:45 GB
- 每个分区中的记录数:420 万
- 百万 Redshift 配置:单节点 dc2.xlarge
附上tableddl
尝试将此 table 中的文本列声明为 VARCHAR 而不是 STRING。还要确保为列使用尽可能小的 VARCHAR 大小,以减少 GROUP BY 所需的内存。
此外,还有两个建议:
建议始终使用至少 2 个 Redshift 节点。这给
你是一个免费的领导节点,并允许你的计算节点使用所有
他们的 RAM 用于查询处理。
按这么多列分组是一种不寻常的查询模式。如果您要在 table 中查找重复项,请考虑将列散列为单个值并对其进行分组。这是一个例子:
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
;
我正在尝试对 26 列进行分组来执行查询。数据以按天分区的镶木地板格式存储在 S3 中。 Redshift Spectrum 查询返回以下错误。我无法在 aws 中找到与此相关的任何文档。
Request ran out of memory in the S3 query layer
- table 中的总行数:7.7 亿
- Parquet 格式 table 的总大小:45 GB
- 每个分区中的记录数:420 万
- 百万 Redshift 配置:单节点 dc2.xlarge
附上tableddl
尝试将此 table 中的文本列声明为 VARCHAR 而不是 STRING。还要确保为列使用尽可能小的 VARCHAR 大小,以减少 GROUP BY 所需的内存。
此外,还有两个建议:
建议始终使用至少 2 个 Redshift 节点。这给 你是一个免费的领导节点,并允许你的计算节点使用所有 他们的 RAM 用于查询处理。
按这么多列分组是一种不寻常的查询模式。如果您要在 table 中查找重复项,请考虑将列散列为单个值并对其进行分组。这是一个例子:
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 ;