問題
你想要逃跑MSCK修複表<表名>命令為同一表並行和正在獲取sockettimeoutexception:讀取超時或內存不足錯誤消息。
導致
試圖向表中添加大量新分區時MSCK修複同時,Hive metastore也成為了一個限製因素,因為它每秒隻能添加幾個分區。新分區的數量越多,查詢失敗的可能性就越大sockettimeoutexception:讀取超時錯誤或內存不足錯誤消息。
解決方案
您不應該嚐試運行多個MSCK修複表<表名>並行命令。
Databricks為單個線程使用多個線程MSCK修複默認情況下,拆分createPartitions ()成批量。通過限製創建的分區數量,可以防止Hive metastore超時或出現內存不足錯誤。它還並行地收集快速統計數據(文件數量和文件的總大小),從而避免了按順序列出亞穩態文件的瓶頸。這是由spark.sql.gatherFastStats,默認啟用。