MSCK修理表並行運行時錯誤

不並行運行“MSCK修複”命令。它導致一個讀超時或內存不足錯誤消息。

寫的ashritha.laxminarayana

去年發表在:2022年5月23日

問題

您正試圖運行MSCK修理表<表名稱>並行命令相同的表和得到java.net.SocketTimeoutException:讀超時或者內存不足錯誤消息。

導致

當你試圖添加大量的新的分區表MSCK修複同時,蜂巢metastore成為限製因素,因為它每秒隻能添加幾個分區。新分區的數量越大,越有可能,一個查詢將失敗java.net.SocketTimeoutException:讀超時發生內存溢出錯誤或錯誤消息。

解決方案

你不應該試圖運行多個MSCK修理表<表名稱>並行命令。

磚為單一使用多個線程MSCK修複默認情況下,分裂createPartitions ()成批量。通過限製創建的分區的數量,它阻止蜂巢metastore超時或打一個內存錯誤。它還收集快速統計數據(文件和文件的總大小)同時,也避免了清單的瓶頸metastore順序文件。這是由spark.sql.gatherFastStats,這是默認啟用。