1 Fetch 抓取
Hive调优-萌贝树母婴无骗子,Fectch 抓取是指对某些情况下的查询不必使用 MapReduce 计算将 hive.fetch.task.conversion 设置成 more,在全局查找、字段查找、limit查找等都不走 MapReduce2 本地模式
Hive调优-萌贝树母婴无骗子,多数的 Hadoop Job 是需要 Hadoop 提供的完整的可扩展性来处理大数据集的,不过,有时 Hive 的输入数据量是非常小的,在这种情况下,为查询触发执行任务消耗的时间可能会比实际job的执行时间要多的多,对于大多数这种情况,Hive 可以通过本地模式在单台机器上处理所有的任务,对于小数据集,执行时间可以明显被缩短将 hive.exec.mode.local.auto 设置成 true,让 Hive 在适当的时候自动启动这个优化3 表优化
3.1 空 KEY 过滤
有时 JOIN 超时是因为某些 KEY 对应的数据太多,而相同 KEY 对应的数据都会发送到相同的 Reducer 上,从而导致内存不够,此时我们应该仔细分很多情况下,这些 KEY 对应的数据是异常数据,我们需要在 SQL 语句中进行过滤。
3.2 空 KEY 转换
有时虽然某个 KEY 为空对应的数据很多,但是相应的数据不是异常数据,必须要包含在 JOIN 的结果中,此时我们可以将表中 KEY 为空的字段赋一个随机的值,使得数据随机均匀地分不到不同的 Reducer 上。
3.3 MapJOIN
如果不指定 MapJOIN 或者不符合 MapJOIN 的条件,那么 Hive 解析器会将 JOIN 转换成 Common JOIN,即:在Reduce阶段完成 JOIN,容易发生数据倾斜,可以用 MapJOIN 把小表加载到内存在 Map 端进行 JOIN,避 Reducer 处理。
原文地址:https://blog.51cto.com/14539425/2439939