1、完全分布式中hive的执行模式
问题描述:
Hive在执行job任务时候卡死并报出信息:Number of reduce tasks is set to 0 since there’s no reduce operator(翻译:由于没有减少操作符,减少任务数被设置为0),如图:
这样的情况下,Hive 已经无法继续执行,只能退出重启hive(但是依然不能执行)。这是因为虽然输入文件很小,但是需要加载的文件很大,根本吃不消。
解决问题:
Hive支持任务执行选择本地模式(local mode),对数据量比较小的操作,就可以在本地执行,这样要比提交任务到集群执行效率要快很多。
当一个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
(注:可用参数hive.mapred.local.mem(默认0)控制child jvm使用的最大内存数。)
2、配置如下参数:
set hive.exec.mode.local.auto=true;(默认为false)
然后再去执行就OK了。