在透過Hive SQL向Parquet或者ORC格式的表插入資料時,如果開啟的分割槽數量太多。很容易導致OOM。即便資料只有小小的幾M。
主要原因是在寫入這些檔案之前,需要將這些批次的行快取到記憶體中。
每一個動態分割槽目錄都會有一個檔案寫入器。因為這些緩衝區都是按照分割槽維護的。所以所需記憶體隨著分割槽數量的增加而增加。
解決辦法:
將 hive.optimize.sort.dynamic.partition 設定為true。
在透過Hive SQL向Parquet或者ORC格式的表插入資料時,如果開啟的分割槽數量太多。很容易導致OOM。即便資料只有小小的幾M。
主要原因是在寫入這些檔案之前,需要將這些批次的行快取到記憶體中。
每一個動態分割槽目錄都會有一個檔案寫入器。因為這些緩衝區都是按照分割槽維護的。所以所需記憶體隨著分割槽數量的增加而增加。
解決辦法:
將 hive.optimize.sort.dynamic.partition 設定為true。