錯誤信息:
ERROR:
Memory limit exceeded
Query did not have enough memory to get the minimum required buffers in the block manager.
原因:
當impala查詢的時候,涉及到了group by having或者很多join的時候,會出現以上的錯誤。
解決方法就是把內存限制取消,或者加大
set mem_limit=-1 #取消
或者 1gb 100mb 1000b等值
如果以上還不行,就要去配置文件修改
Impala Daemon 內存限制
mem_limit=-1b
單池內存限制
default_pool_mem_limit=-1b
說明 :
default_pool_mem_limit:
配置使用單個池時用於 Admission Control 的運行查詢的最大內存。-1 或 0 表示無限制。已啓用“用於 Admission Control 的動態資源池”時忽略。
mem_limit:
由守護程序本身強制執行的 Impala Daemon 的內存限制(以字節爲單位)。如果達到該限制,Impalad Daemon 上運行的查詢可能會被停止。將其留空可以讓 Impala 選擇自己的限制。使用 -1 B 值將指定無任何限制。
如圖: