博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive开启本地模式执行
阅读量:6293 次
发布时间:2019-06-22

本文共 1103 字,大约阅读时间需要 3 分钟。

hot3.png

先讲一个hive使用的一个小技巧。对于使用惯了oracle的人来说,hive中没有dual啊,想验证一些函数的执行结果很是麻烦。

比如我们在oracle数据库里面可以写select (1+2) from dual可以返回3。

为了保证使用习惯,我们类似的在hive中也建一张dual表:create table dual(dummy string)

然后往这张表中导入一个只有一行数据的文件:load data local inpath '/home//dual.txt' overwrite into table dual

这样我们就可以在hive中用select (1+2) from dual了。

接下来就是本文要阐述的内容:你会发现执行这个语句的时候提交了一个job到集群上去运行了,这么一个简单的语句都需要执行好几十秒,完全没法接受,其实我们使用dual的时候大多只是验证一下函数的执行结果而已,需要快速的返回我们想看到的结果。

0.7版本后Hive开始支持任务执行选择本地模式(local mode)。大多数的Hadoop job是需要hadoop提供的完整的可扩展性来处理的。不过,有时hive的输入数据量是非常小的。在这种情况下,为查询出发执行任务的时间消耗可能会比实际job的执行时间要多的多。对于大多数这种情况,hive可以通过本地模式在单台机器上处理所有的任务。对于小数据集,执行时间会明显被缩短。

 

如此一来,对数据量比较小的操作,就可以在本地执行,这样要比提交任务到集群执行效率要快很多。

配置如下参数,可以开启Hive的本地模式:
hive> set hive.exec.mode.local.auto=true;(默认为false)
当一个job满足如下条件才能真正使用本地模式:
1.job的输入数据大小必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB)
2.job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max(默认4)
3.job的reduce数必须为0或者1

 

但是你会发现job确实是以本地模式运行了(看job名字就能看出来,中间有local字样),但是还是会报错,各种找不到jar包。

这里还要运行一个语句:set fs.defaultFS=file:///

然后你再去执行前面的那条语句,可以正常运行了,执行实现只需要几秒钟而已,我们能够很快的看到执行结果了。

转载于:https://my.oschina.net/sniperLi/blog/758252

你可能感兴趣的文章
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>