hive优化整理

问题导读

1.如何开启Fetch?
2.哪些情况下,hive执行不使用MapReduce?
3.本地模式适用于什么情况?
4.小表与大表新版本是否需要优化?
5.大表与大表空值比较多该如何优化?
6.如何在Map端join?
7.动态分区的作用是什么?
8.数据倾斜有哪些措施?
9.严格模式你认为什么情况下会用到?

1.Fetch抓取

  1. set hive.fetch.task.conversion=more(默认)
    Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。该属性设置为 more 以后,在全局查找、字段查找、limit 查找等都不走 MapReduce。 设置为none后所有类型的查找语句都要走MapReduce;
    例如:
    1 查询所有员工的所有信息
hive> select * from emp;
OK
1001.0 Tome null 5000.0 10.0
1002.0 Tome null 5000.0 10.0
7369.0 SMITH CLERK 4800.0 20.0
Time taken: 3.664 seconds, Fetched: 16 row(s)

2、查询员工信息:员工号 姓名 月薪

hive> select empno,ename,sal from emp;
OK
1001.0 Tome 5000.0
1002.0 Tome 5000.0
Time taken: 0.166 seconds, Fetched: 16 row(s)

3、查询员工信息:员工号 姓名 月薪 年薪

hive> select empno,ename,sal,sal*12 from emp;
OK
1001.0 Tome 5000.0 60000.0
1002.0 Tome 5000.0 60000.0
Time taken: 0.184 seconds, Fetched: 16 row(s)

2.本地模式

  1. set hive.exec.mode.local.auto=true(开启本地模式)
    Hive 可以通过本地模式在单台机器上 处理所有的任务。对于小数据集,执行时间可以明显被缩短,本地模式只能运行一个reducer
    ①开启本地模式后需要设置local mr的最大输入数据量,当数据量小于这个值时采用local mr的方式
    set hive.exec.mode.local.auto.inputbytes.max=134217728(默认)

②开启本地模式后需要设置local mr的最大输入文件个数,当数据量小于这个值时采用local mr的方式

  set hive.exec.mode.local.auto.input.files.max=4(默认)

上面是开启的自动本地模式,Hive通过条件判断是否通过本地模式运行mapreduce任务。
当然也有完全本地模式,需要开启下面选项


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值