問題
您正試圖運行MSCK修理表<表名稱>並行命令相同的表和得到java.net.SocketTimeoutException:讀超時或者內存不足錯誤消息。
導致
當你試圖添加大量的新的分區表MSCK修複同時,蜂巢metastore成為限製因素,因為它每秒隻能添加幾個分區。新分區的數量越大,越有可能,一個查詢將失敗java.net.SocketTimeoutException:讀超時發生內存溢出錯誤或錯誤消息。
解決方案
你不應該試圖運行多個MSCK修理表<表名稱>並行命令。
磚為單一使用多個線程MSCK修複默認情況下,分裂createPartitions ()成批量。通過限製創建的分區的數量,它阻止蜂巢metastore超時或打一個內存錯誤。它還收集快速統計數據(文件和文件的總大小)同時,也避免了清單的瓶頸metastore順序文件。這是由spark.sql.gatherFastStats,這是默認啟用。