我试图弄清楚为什么在我对它进行简单查询时,我的15 GB表膨胀到182 GB的原因。
首先,我将表从Redshift读入Spark。当我告诉Spark对表进行简单计数时,它可以正常工作。但是,当我尝试创建表时,遇到了各种YARN故障,最终我的某些任务将182 GB的溢出内存洗牌了。
这是有问题的查询(我更改了一些名称):
CREATE TABLE output
SELECT
*
FROM inputs
DISTRIBUTE BY id
SORT BY snapshot_date
这是怎么回事?混洗溢出如何超出输入的总大小?我不是在做笛卡尔联接,或者类似的事情。这是一个非常简单的查询。
我知道Red Hat Linux(我在AWS上使用EMR)存在虚拟内存问题,因为我遇到了主题here,但是我已经向我添加了推荐的配置classification=yarn-site,properties=[yarn.nodemanager.vmem-check-enabled=false]
EMR属性,问题仍然存在。
以下是Spark UI的屏幕截图,如果有帮助的话: