hiveQL 本地mapreduce

如果在hive中运行的sql本身数据量很小,那么使用本地mr的效率要比分布式的快很多。。

 

比如: 

 

Sql代码  收藏代码
  1. hive> select 1 from dual;  
  2. Total MapReduce jobs = 1  
  3. Launching Job 1 out of 1  
  4. Number of reduce tasks is set to 0 since there's no reduce operator  
  5. Starting Job = job_201208151631_2040444, Tracking URL = http://jt.dc.sh-wgq.sdo.com:50030/jobdetails.jsp?jobid=job_201208151631_2040444  
  6. Kill Command = /home/hdfs/hadoop-current/bin/hadoop job  -Dmapred.job.tracker=10.133.10.103:50020 -kill job_201208151631_2040444  
  7. 2012-10-23 10:55:17,646 Stage-1 map = 0%,  reduce = 0%  
  8. 2012-10-23 10:55:27,807 Stage-1 map = 100%,  reduce = 0%  
  9. Ended Job = job_201208151631_2040444  
  10. OK  
  11. 1  
  12. Time taken: 17.853 seconds  
 

 

 

set hive.exec.mode.local.auto=true;  //开启本地mr

 

//设置local mr的最大输入数据量,当输入数据量小于这个值的时候会采用local  mr的方式

set hive.exec.mode.local.auto.inputbytes.max=50000000;

 

//设置local mr的最大输入文件个数,当输入文件个数小于这个值的时候会采用local mr的方式

set hive.exec.mode.local.auto.tasks.max=10;

 

当这三个参数同时成立时候,才会采用本地mr

 

Sql代码  收藏代码
  1. hive> select 1 from dual;               
  2. Total MapReduce jobs = 1  
  3. Launching Job 1 out of 1  
  4. Number of reduce tasks is set to 0 since there's no reduce operator  
  5. Execution log at: /tmp/liuxiaowen/liuxiaowen_20121023105757_31c966be-ee79-4c23-a467-648290b338ac.log  
  6. Job running in-process (local Hadoop)  
  7. 2012-10-23 10:58:03,728 null map = 100%,  reduce = 0%  
  8. Ended Job = job_local_0001  
  9. OK  
  10. 1  
  11. Time taken: 4.842 seconds  
 
原文地址:https://www.cnblogs.com/java20130722/p/3206945.html