Hive本地模式

大多数的 Hadoop Job 是需要 Hadoop 提供的完整的可扩展性来处理大数据集的。不过,
有时 Hive 的输入数据量是非常小的。在这种情况下,为查询触发执行任务消耗的时间可能
会比实际 job 的执行时间要多的多。对于大多数这种情况, Hive 可以通过本地模式在单台机
器上处理所有的任务。对于小数据集,执行时间可以明显被缩短。
用户可以通过设置 hive.exec.mode.local.auto 的值为 true ,来让 Hive 在适当的时候自动
启动这个优化。

 

1 )案例实操:
(2)关闭本地模式(默认是关闭的),并执行查询语句
hive (default)> select count(*) from emp group by deptno;
(1)开启本地模式,并执行查询语句
hive (default)> set hive.exec.mode.local.auto=true;
hive (default)> select count(*) from emp group by deptno;
4 表的优化
4.1 小表大表 Join MapJOIN
key 相对分散,并且数据量小的表放在 join 的左边,可以使用 map join 让小的维度表
先进内存。在 map 端完成 join
实际测试发现:新版的 hive 已经对小表 JOIN 大表和大表 JOIN 小表进行了优化。小表放
在左边和右边已经没有区别。
1 )需求介绍
测试大表 JOIN 小表和小表 JOIN 大表的效率
2 )开启 MapJoin 参数设置
(1)设置自动选择 Mapjoin
set hive.auto.convert.join = true; 默认为 true
(2)大表小表的阈值设置(默认 25M 以下认为是小表):
set hive.mapjoin.smalltable.filesize = 25000000;
3 MapJoin 工作机制

 4)建大表、小表和 JOIN 后表的语句

 5)分别向大表和小表中导入数据

 6)小表 JOIN 大表语句

 7)大表 JOIN 小表语句

 4.2 大表 Join 大表

1 )空 KEY 过滤
有时 join 超时是因为某些 key 对应的数据太多,而相同 key 对应的数据都会发送到相同
reducer 上,从而导致内存不够。此时我们应该仔细分析这些异常的 key ,很多情况下,
这些 key 对应的数据是异常数据,我们需要在 SQL 语句中进行过滤。例如 key 对应的字段为
空,操作如下:
案例实操
(1)配置历史服务器
配置 mapred-site.xml

 

 启动历史服务器

sbin/mr-jobhistory-daemon.sh start historyserver
查看 jobhistory
http://hadoop102:19888/jobhistory
(2)创建原始数据空 id
(3)分别加载原始数据和空 id 数据到对应表中
(4)测试不过滤空 id
(5)测试过滤空 id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据开发工程师-宋权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值