Hive开启本地模式执行

hive开启本地模式执行的原因

我给数据插入一个id=1,居然等了220秒,快4分钟了。当时我就觉得是时候好好整整它了。在这里插入图片描述
这么一个简单的语句都需要执行好几十秒,完全没法接受,其实我们在刚开始学习的时候大多只是验证一下函数的执行结果而已,需要快速的返回我们想看到的结果。hive本来就是来处理海量数据的,初学者接触数据本来没有那么大,这就像大炮打蚊子一样。

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

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

方式1(临时开启,重启后无效)

配置语句:

配置如下参数,可以开启Hive的本地模式:

hive> set fs.defaultFS=file:///
hive> set hive.exec.mode.local.auto=true;(默认为false)

解释:
运行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:///

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

方式2(一次就好,陪你终老)

进入hive配置文件site

#进入hive配置文件目录
cd  /hive//usr/local/src/hive-1.2.1/conf
#进入配置文件
vi hive-site.xml
#修改配置文件
Ctrl+exec.mode.local.auto
#把false改为true
#Shift+zz保存并退出

配置后的运行结果:

在这里插入图片描述

愿你安好,我不再打扰。

你可能感兴趣的:(Hive开启本地模式执行)