1、可以直接不进入hive的情况下执行sql语句
通过shell的参数 -e 可以执行一次就运行完的命令
hive -e "select * from yhdb.student"
hive -S -e "set" | grep cli.print
-S 是静默模式,会省略掉多余的输出
假如我想在查询语句的结果上面显示字段名称,可以将
set hive.cli.print.header=true;
想永久设置:修改/opt/installs/hive/conf/.hiverc文件
追加一条:
set hive.cli.print.header=true;
2、hive可以直接运行sql文件
hive -f sql语句的路径
先创建一个sql语句test.sql:
use yhdb;
insert into student values(1,'laoyan');
hive -f test.sql 即可运行
3、可以在hive中执行linux命令
在Hive的shell中 加上前缀! 最后以分号;结尾,可以执行linux的命令
! ls /home/hivedata ;
4、可以在hive中操作hdfs
用户可以在Hive的shell中执行HDFS的DFS命令,不用敲入前缀hdfs或者hadoop
dfs -ls /user/hive/warehouse
5、设置显示当前数据库
hive-site.xml
<property>
<name>hive.cli.print.current.db</name>
<value>false</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
将value设置为true即可。
跟之前在.hiverc中设置 set hive.cli.print.current.db=true; 效果是一样的。
思考:设置一个属性有几种方法?
第0种:命令行方式
1、启动hive时,可以在命令行添加 --hiveconf param = value来设定参数
2、测试:通过命令行参数方式,配置hive不打印当前数据库名
hive --hiveconf hive.cli.print.current.db = false
注意:命令行参数方式仅仅对本次hive启动有效。
假如 .hiverc 中也有相同的配置,以.hiverc 为准
第一种:直接在hive的窗口上设置
set hive.cli.print.current.db=true;
它的设置可以覆盖.hiverc中的配置。
第二种:在hive的conf下的.hiverc 设置
第三种:修改hive-site.xml 进行设置
第四种:默认设置
到底以哪种方式设置为准:
第一种 > 第二种> 所谓的第0种 > 第三种 > 第四种 【就近原则】
假如窗口中设置以窗口为准,顶掉前面所有地方的设置,假如.hiverc设置,.hiverc 中的设置会顶替到它之前所有的设置,以此类推。
第四种默认设置:hive在安装的时候会有元数据,元数据中的设置为默认设置,假如你想更改设置,需要自己编写一个hive-site.xml ,在这个文件中想顶掉哪个默认设置就写哪个。
第一种和第二种其实是一种,生命周期都是客户端进入,hive进入后,会自动加载.hiverc文件,将里面的set执行一遍。断开连接后,配置消失。
hive-site.xml 中其实只需要编写自己需要的配置即可,没必要复制全部!!!!
查看当前session中的设置:
set hive.cli.print.current.db;
6、设置本地模式运行速度更快(小任务)
-- 开启本地模式
set hive.exec.mode.local.auto=true
-- 当文件大小小于这个的值才会进入本地模式
set hive.exec.mode.local.auto.inputbytes.max=134217728
-- 假如文件的数量小于这个值才会进入本地模式
set hive.exec.mode.local.auto.input.files.max=4
.hiverc中不要写注释,否则报错
假如运行报:文件打开过多的错误,请修改如下配置
vi /etc/security/limits.conf
在下方添加:
root soft nofile 65535
root hard nofile 65535
标签:hiverc,set,技巧,cli,hive,Hive,设置,print,关于
From: https://blog.csdn.net/Yz9876/article/details/143858143