Hive学习总结-调优篇
仅为调优检索,只列举大致思路,不包含具体调优操作
10.1-10.3 Explain-Fetch-本地模式
执行计划(Explain)查看下面这条语句的执行计划
explain select * from emp;
Fetch 抓取: Hive 中对某些情况的查询可以不必使用MapReduce 计算
例如:SELECT * FROM employees, 在这种情况下,Hive 可以简单地读取 employee 对应的存储目录下的文件, 然后输出查询结果到控制台。
在 hive-default.xml.template 文件中 hive.fetch.task.conversion 默认是 more,老版本 hive默认是 minimal,该属性修改为 more 以后,在全局查找、字段查找、limit 查找等都不走 mapreduce。
本地模式
大多数的 Hadoop Job 是需要 Hadoop 提供的完整的可扩展性来处理大数据集的。不过,有时 Hive 的输入数据量是非常小的。在这种情况下,为查询触发执行任务消耗的时间可能会比实际 job 的执行时间要多的多。对于大多数这种情况,Hive 可以通过本地模式在单台机器上处理所有的任务。对于小数据集,执行时间可以明显被缩短。 用户可以通过设置 hive.exec.mode.local.auto 的值为 true,来让 Hive 在适当的时候自动启动这个优化。
10.4 HIVE分桶表_三种join实现
hive 提供了三种join方式,common join; map join; smb join
-
common join
特点:最常见的join 类型,需要执行shuffle操作,根据join条件对数据进行重新分布
适用场景:两表数量都不大的场景
缺点: