最近在遇到在将一张表的数据批量导入到一个按天分区的分区表中(原始表数据包含几年的数据),在入数的过程中发现直接insert
一直卡在map端,运行很久也没有进度,此时du 看了下中间过程的临时文件大小,发下是有在写入的但是很慢,此时目录下也有很多
临时的文件每个map会输出每个分区的文件,这样在目标分区过多时就会面临map需要输出很多文件,问题确定了那怎么解决呢?
既然这里是生成的临时文件过多,那我们可以是否可以想个方式去合并这些文件呢?答案是可以的此时我们可以加个 distribute by 分区字段这样相同分区的数据就会到一个reduce 就避免了生成过多临时文件的问题(在测试过程中一开始用了distribute by rand() 发现每个reduce都会生成一个目标分区 的文件,这样实际虽然可能跑的过但是带来了了目标文件过多过小的问题)。
Hive动态分区问题记录
于 2022-09-26 11:11:32 首次发布