Hive的shell以及Hive参数的配置

Hive的shell以及Hive参数的配置

Hive的shell

一:进入Hive的客户端之前
  • 执行语句相关的
  hive -e "sql" ;
  hive -e "show dtabase;" 执行单个sql语句

执行顺序是:启动客户端–》执行语句–》退出客户端;

  hive -f sql脚本;
  
  创建一个文件shell.txt,写入sql脚本:
  create database test_shell;
  use test_shell;
  create table stu(sid int,name string,age int);
  insert into table stu values(1,"ZS",43);
  select * from stu;
  
  hive -f /home/hadoop/shell.txt
  • 参数配置相关的
  hive  -hiveconf key=value;预设启动客户端的时候的参数值,一次只能预设一个
  
  例如:hive -hiveconf  hive.exec.mode.local.auto=true;本地模式启动
  

  hive -i filename;通过一个文件来初始化参数的,可以一次性初始化多个参数 
  
  例如将这些写到一个文件file.txt中:	
  
  set hive.cli.print.header=true;
  
  set hive.exec.mode.local.auto=true;
  
  启动的hive的时候指定文件:hive -i  /home/hadoop/file.txt
二:进入Hive的客户端之后

**- quit:退出hive的客户端

  • set key=value:设置hive的参数值,这种修改的方式只对当前客户端生效
    ​ 例如:
    ​ set mapreduce.job.reduces=3;设置reducetask的个数为3
  • set key:查询当前key对应的value值
  • set -v:打印所有的参数
  • add FILE [file]:添加文件到hive的classpath中
  • list FILE:查看当前classpath下所有的文件
  • add jar:添加jar包到hive的classpath下
  • list jar | jars :查看当前classpath下的所有jar
  • ![amd] :在hive的客户端执行linux命令,支持查看,创建,删除,切换不行
    ​ 例如:!ls; !pwd; !touch file; 可以
  • dfs [dfs amd]:在hive的客户端执行hadoop命令
    例如:
    ​ dfs -ls;查看
    ​ 上传文件: dfs -put /home/hadoop/hive_data/a.txt /;这里上传文件速度很快,因为hive就是hdfs的客户端,表数据就存在hdfs上面,相当于只是移动位置而已;
  • source FILE;同mysql中的,用来加载sql脚本(一系列的sql语句)**

Hive参数的配置

对于一般参数,有以下三种设定方式:

  • 配置文件 (全局有效)
  • 命令行参数(对 hive 启动实例有效)
  • 参数声明 (对 hive 的连接 session 有效)
一·:配置文件

​ Hive 的配置文件包括

​ 用户自定义配置文件:$HIVE_CONF_DIR/hive-site.xml

​ 默认配置文件:$HIVE_CONF_DIR/hive-default.xml

用户自定义配置会覆盖默认配置。 另外,Hive 也会读入 Hadoop 的配置,因为 Hive 是作为 Hadoop 的客户端启动的,Hive 的配 置会覆盖 Hadoop 的配置。 配置文件的设定对本机启动的所有 Hive 进程都有效。

二:命令行参数

​ 启动 Hive(客户端或 Server 方式)时,可以在命令行添加-hiveconf param=value 来设定参数,例如:

bin/hive -hiveconf hive.root.logger=INFO,console 

这一设定对本次启动的 session(对于 server 方式启动,则是所有请求的 session)有效。

三:参数声明

​ 可以在 HQL 中使用 SET 关键字设定参数,例如:

set mapred.reduce.tasks = 10; 
set mapreduce.job.reduces = 10; 

这一设定的作用域也是 session 级的。

  • set hive.exec.reducers.bytes.per.reducer= 每个 reduce task 的平均负载数据量
  • Hive 会估算总数据量,然后用该值除以上述参数值,就能得出需要运行的 reduceTask 数
  • set hive.exec.reducers.max= 设置 reduce task 数量的上限
  • set mapreduce.job.reduces= 指定固定的 reduce task 数量

但是,这个参数在必要时<业务逻辑决定只能用一个 reduce task> hive 会忽略,比如在设置 了 set mapreduce.job.reduces = 3,但是 HQL 语句当中使用了 order by 的话,那么就会忽略该 参数的设置

上述三种设定方式的优先级依次递增。即参数声明覆盖命令行参数,命令行参数覆盖配置 文件设定。注意某些系统级的参数,例如 log4j 相关的设定,必须用前两种方式设定,因为 那些参数的读取在 session 建立以前已经完成了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值