在写hive中常用的方法时,感觉到那个页面只适合写函数等方法性的东西,没法对一个很常用的东西做深入探究总结,顾新开一个页面来详细介绍HIVE的深入综合性操作。函数页面内容见:https://blog.youkuaiyun.com/xxzhangx/article/details/81009738
**注:**内容来自自己工作总结以及学习《Hive编程指南》总结
hive 执行
在shell界面输入hive --help,就可以得到命令行参数。注意:这里给的h2cmd,是我这里做了修改。
这里重点介绍-e,-f,–hiveconf,–hivevar这四个的用法
两种执行方式
- hive -e
用于执行查询类的语句,-e 后的后就是代码
hive -e "sql 代码"
hive中“一次使用”命令
hive -e "SELECT * FROM MYTABLE LIMIT 10"
也可以输入到文件中
hive -e "SELECT * FROM MYTABLE LIMIT 10" > /tmp/mytable/data.csv
查看信息
cat /tmp/mytable/data.csv
如果觉得在执行的时候出现很多不必要的中间log,可以加入**-S**,表示开启静默执行模式
hive -S -e "SELECT * FROM MYTABLE LIMIT 10" > /tmp/mytable/data.csv
- hive -f
用于执行sql文件
hive -f data.hql
传递参数
这里介绍两种方法:hiveconf 和 hivevar,hiveconf属于hive-site.xml下面配置的环境变量,hivevar为临时变量。在运行时hiveconf必须带上命名空间,如**${hiveconf:key},hivevar直接使用${key}**即可。
- hiveconf 案例介绍
一次执行代码
hive --hiveconf pt_dt=2018-07-25 -e "SELECT * FROM MYTABLE WHERE pt_dt = "${hiveconf:pt_dt}" LIMIT 10" > /tmp/mytable/data.csv
执行文件
data.hql的代码如下:
SELECT * FROM MYTABLE WHERE pt_dt = "${hiveconf:pt_dt}" LIMIT 10
在终端执行语句
hive --hiveconf pt_dt=2018-07-25 -f data.hql > /tmp/mytable/data.csv
- hivevar 案例介绍
一次执行
hive --hivevar pt_dt=2018-07-25 -e "SELECT * FROM MYTABLE WHERE pt_dt = "${pt_dt}" LIMIT 10" > /tmp/mytable/data.csv
执行文件
SELECT * FROM MYTABLE WHERE pt_dt = "${pt_dt}" LIMIT 10
在终端执行语句
hive --hivevar pt_dt=2018-07-25 -f data.hql > /tmp/mytable/data.csv
删除分区表
ALTER TABLE dwd.op_topic_activity DROP IF EXISTS PARTITION (topicid=2,batchid=19,pt_dt="2019-01-03",classid=6);