MSCK修理表并行运行时错误

不并行运行“MSCK修复”命令。它导致一个读超时或内存不足错误消息。

写的ashritha.laxminarayana

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

问题

您正试图运行MSCK修理表<表名称>并行命令相同的表和得到java.net.SocketTimeoutException:读超时或者内存不足错误消息。

导致

当你试图添加大量的新的分区表MSCK修复同时,蜂巢metastore成为限制因素,因为它每秒只能添加几个分区。新分区的数量越大,越有可能,一个查询将失败java.net.SocketTimeoutException:读超时发生内存溢出错误或错误消息。

解决方案

你不应该试图运行多个MSCK修理表<表名称>并行命令。

砖为单一使用多个线程MSCK修复默认情况下,分裂createPartitions ()成批量。通过限制创建的分区的数量,它阻止蜂巢metastore超时或打一个内存错误。它还收集快速统计数据(文件和文件的总大小)同时,也避免了清单的瓶颈metastore顺序文件。这是由spark.sql.gatherFastStats,这是默认启用。

这篇文章有用吗?