我面临着在红移频谱上频繁Disk Full error的问题,因此,我不得不反复扩容集群。缓存似乎会被删除。
理想情况下,我希望向上扩展以保持缓存,并找到一种方法来了解查询需要多少磁盘空间。
有没有什么文档谈到了红移频谱的缓存,或者他们正在使用相同的机制来进行红移?
编辑:应Jon Scott的要求,我正在更新我的问题
SELECT p.postcode,
SUM(p.like_count),
COUNT(l.id)
FROM post AS p
INNER JOIN likes AS l
ON l.postcode = p.postcode
GROUP BY 1;S3上压缩的数据总量约为1.8 TB。雅典娜花了10分钟扫描了700G然后告诉我Query exhausted resources at this scale factor
编辑2:我使用了一个16 TB的SSD集群。
发布于 2019-06-28 00:06:47
您没有提到正在使用的Redshift集群的大小,但简单的答案是使用更大的Redshift集群(更多的节点)或使用更大的节点类型(每个节点更多的磁盘)。
这个问题的发生是因为红移频谱无法将完整的连接执行向下推送到频谱层。大部分数据被返回到Redshift集群,只是为了执行连接。
您还可以重新构造查询,以便可以将更多的工作下推到Spectrum,在这种情况下,可以在连接之前进行分组和计数。如果每个子查询输出的总行数比连接返回的行数少得多,这将是最有效的。
SELECT p.postcode
, p.like_count
, l.like_ids
FROM (--Summarize post data
SELECT p.postcode
, SUM(p.like_count)
FROM post AS p
GROUP BY 1
) AS p
INNER JOIN (--Summarize likes data
SELECT l.postcode
, COUNT(l.id) like_ids
FROM likes AS l
GROUP BY 1
) AS l
-- Join pre-summarized data only
ON l.postcode = p.postcode
;https://stackoverflow.com/questions/56769811
复制相似问题