Hive分区
动态分区插入数据时,因为创建的目录较多、文件较多,而导致系统报错,如何处理?
可以通过hive配置,增加动态分区支持的目录数,和创建的文件数。
set hive.exec.max.dynamic.partitions.pernode=10000;
set hive.exec.max.dynamic.partitions=100000;
set hive.exec.max.created.files=150000;
Hive内存溢出
Yarn 内存配置
yarn.nodemanager.resource.memory-mb、yarn.scheduler.maximum-allocation-mb配置的值要保持一致,将主机剩余的可用内存,都划分到这两个配置中。比如系统一共分配了32G内存,系统和程序已经使用了12G内存,剩下20G内存,这两个配置就都配置为20G。
yarn.app.mapreduce.am.command-opts(JVM内存)的值也要同步修改为略小的值,格式:-Xmx1024m。
MR内存配置
根据需求进行调配,但此处的配置不能高于Yarn的内存配置。
mapreduce.map.memory.mb和mapreduce.reduce.memory.mb的内存设置,要大于mapreduce.map.java.opts、mapreduce.reduce.java.opts的配置。
关闭MapJoin
MapJoin能够提高hive分析性能,但是占用内存较大。内存溢出时,关闭MapJoin可以减轻大量的内存压力:
set hive.auto.convert.join=false;

本文探讨了Hive分区操作中的问题及其解决方案,通过调整hive.exec.max.dynamic.partitions.pernode、hive.exec.max.dynamic.partitions和hive.exec.max.created.files等配置参数来应对动态分区过多导致的错误。此外,还详细讲解了处理Hive内存溢出的方法,包括正确配置Yarn和MapReduce的内存参数,并在内存紧张时关闭MapJoin。最后,提出了通过分批处理数据和利用分区、分桶采样来提升Hive查询效率的策略。
最低0.47元/天 解锁文章
2545

被折叠的 条评论
为什么被折叠?



