hive的变量与属性
hive变量的命名空间
1、hivevar:是用户自定义的变量
2、hiveconfig:hive相关的配置属性
3、system:Java定义的配置属性
以上三个变量都是可读可写的
4、env:shell环境定义的环境变量,只可读
*hive变量是使用Java字符串的方式存储的,所以使用的类型就是string
在CIL中使用查询语句时,如果其中有变量,会先将变量替换成变量的值,再把查询语句提交给查询处理器
对变量的操作
一、hivevar
这些变量是不能跨会话的。
1、创建变量
①在直接在CLI用:
其中 hive --define key=value; 与 hive --hivevar key=value;是等价的。都是在hivevar变量空间中创建用户变量。
②在hive内创建变量:
也可以在hive内这样创建。其中set命令可以创建,修改,查看变量。
2、修改变量
①使用set修改
②外部修改
其中,命名空间前缀是可选的
二、hiveconf相关的
可以配置hive行为的所有属性
1、配置hive.cli.print.current.db属性,默认值为false,如果设置成true,则会在hive的命令提示符前打印出当前的数据库名,默认是default。
2、定义成普通变量,使用和hivevar的一样
三、system和env
system的变量是Java定义的配置属性,env是shell环境定义的;它和env在使用时,前面必须加system:或env: 这和hivevar不同
可以清晰的看出,system是可读可写;而env是只可读的。
system和env变量用户都不能自定义。因为他们都不是用户定义的。
hive中的常用命令
1、hive -e “需要执行的语句”
可以将查询结果保存到一个文件中:这种方法会将输出重定到本地系统中,而不是在hdfs中了。
2、hive -e “需要执行的命令” | grep 属性名相关的信息
当记不清属性名时可以这样模糊查询
其中-S是开始静默模式,去除输出的而无关信息。