apachehawq中的虚拟段内存/内核分配

apachehawq中的虚拟段内存/内核分配,hawq,Hawq,我试图在会话级别调整以下Hawq配置,以进行查询- SET hawq_rm_stmt_nvseg = 40; SET hawq_rm_stmt_vseg_memory = '4gb'; Hawq正在纱线资源管理器上运行 Minumum Hawq queue Used capacity 5% hawq_rm_nvseg_perquery_perseg_limit = 6 hawq_rm_min_resource_perseg = 4 运行查询时,我只看到30个容器被启动。它是否应该是40个容

我试图在会话级别调整以下Hawq配置,以进行查询-

SET hawq_rm_stmt_nvseg = 40;
SET hawq_rm_stmt_vseg_memory = '4gb';
Hawq正在纱线资源管理器上运行

Minumum Hawq queue Used capacity 5%
hawq_rm_nvseg_perquery_perseg_limit = 6 
hawq_rm_min_resource_perseg = 4

运行查询时,我只看到30个容器被启动。它是否应该是40个容器(每个虚拟段1个核心)?请帮助我了解如何分配虚拟段内存或内核?

hawq\u rm\u stmt\u nvseg是一个配额限制。默认情况下,这是0。因此,将其设置为40不会增加VSEG的数量,而是限制它

hawq_rm_nvseg_perquery_perseg_limit控制可以创建多少VSEG,您使用的默认值为6。所以VSEG的数量应该是6*个节点。如果看到30个节点,那么可能有5个节点

如果您使用的是随机分布的表,那么可以增加hawq_rm_nvseg_perquery_perseg_limit以获得更多的VSEG来处理您的查询


如果您使用的是散列分布式表,则可以使用更大的bucketnum值重新创建该表,这将在查询时为您提供更多的VSEG。

节点数(物理HAWQ段)为10。所以理想情况下,它应该是40个VSEG(每个物理段4个),形成40个纱线容器,但我看到了30个纱线容器。我在这里遗漏了什么吗?我注意到你把hawq_rm_min_resource_perseg设置为4所以4*10=40。VSEG的数量是动态的,并且基于正在访问的表。小桌子不需要使用更多的VSEG。有关纱线集成的更多详细信息: