並行運行MSCK REPAIR TABLE時出錯

不要並行運行“MSCK REPAIR”命令。它會導致讀取超時或內存不足錯誤消息。

寫的ashritha.laxminarayana

最後發布日期:2022年5月23日

問題

你想要逃跑MSCK修複表<表名>命令為同一表並行和正在獲取sockettimeoutexception:讀取超時或內存不足錯誤消息。

導致

試圖向表中添加大量新分區時MSCK修複同時,Hive metastore也成為了一個限製因素,因為它每秒隻能添加幾個分區。新分區的數量越多,查詢失敗的可能性就越大sockettimeoutexception:讀取超時錯誤或內存不足錯誤消息。

解決方案

您不應該嚐試運行多個MSCK修複表<表名>並行命令。

Databricks為單個線程使用多個線程MSCK修複默認情況下,拆分createPartitions ()成批量。通過限製創建的分區數量,可以防止Hive metastore超時或出現內存不足錯誤。它還並行地收集快速統計數據(文件數量和文件的總大小),從而避免了按順序列出亞穩態文件的瓶頸。這是由spark.sql.gatherFastStats,默認啟用。