关于Hive使用的一些技巧

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值