hive Sql的动态分区问题
在通过Hive SQL向Parquet或者ORC格式的表插入数据时,如果开启的分区数量太多。很容易导致OOM。即便数据只有小小的几M。
主要原因是在写入这些文件之前,需要将这些批次的行缓存到内存中。
每一个动态分区目录都会有一个文件写入器。因为这些缓冲区都是按照分区维护的。所以所需内存随着分区数量的增加而增加。
解决办法:
将 hive.optimize.sort.dynamic.partition 设置为true。
在通过Hive SQL向Parquet或者ORC格式的表插入数据时,如果开启的分区数量太多。很容易导致OOM。即便数据只有小小的几M。
主要原因是在写入这些文件之前,需要将这些批次的行缓存到内存中。
每一个动态分区目录都会有一个文件写入器。因为这些缓冲区都是按照分区维护的。所以所需内存随着分区数量的增加而增加。
解决办法:
将 hive.optimize.sort.dynamic.partition 设置为true。