我正在按日期分区的Hive中加载一个表。它目前包含大约3年的记录,因此大约有900个分区(即365 * 3)。
我正在将每日增量加载到此表中,每天添加一个额外的分区。我使用动态分区来实现这一点,因为我无法保证我的源数据只包含一天的数据(例如,如果我从失败中恢复,我可能需要多天处理数据)。
这一切都很好,但是我注意到实际编写分区的最后一步变得非常慢。我的意思是日志显示MapReduce阶段很快完成,它在最后一步非常慢,因为它似乎扫描并打开所有现有分区,无论它们是否会被覆盖。
我应该明确创建分区以避免这一步吗?
答案 0 :(得分:0)
分区是动态的还是静态的,通常不应该大幅改变性能。你能检查每个分区有多少实际文件被创建?只是想确保实际写入不是序列化的,如果它只写入一个文件就可以。还要检查有多少映射器和裁员受雇于这份工作。