? hive当中的参数、变量都是以命名空间开头的,详情如下表所示:
命名空间 | 读写权限 | 含义 |
---|---|---|
hiveconf | 可读写 | hive-site.xml当中的各配置变量例:hive --hiveconf hive.cli.print.header=true |
system | 可读写 | 系统变量,包含JVM运行参数等例:system:user.name=root |
env | 只读 | 环境变量例:env:JAVA_HOME |
hivevar | 可读写 | 例:hive -d val=key |
? hive的变量可以通过${}方式进行引用,其中system、env下的变量必须以前缀开头
? 1、在${HIVE_HOME}/conf/hive-site.xml文件中添加参数设置
? 注意:永久生效,所有的hive会话都会加载对应的配置
? 2、在启动hive cli时,通过–hiveconf key=value的方式进行设置
? 例如:hive --hiveconf hive.cli.print.header=true
? 注意:只在当前会话有效,退出会话之后参数失效
? 3、在进入到cli之后,通过set命令设置
? 例如:set hive.cli.print.header=true;
--在hive cli控制台可以通过set对hive中的参数进行查询设置
--set设置
set hive.cli.print.header=true;
--set查看
set hive.cli.print.header
--set查看全部属性
set
? 4、hive参数初始化设置
? 在当前用户的家目录下创建**.hiverc**文件,在当前文件中设置hive参数的命令,每次进入hive cli的时候,都会加载.hiverc的文件,执行文件中的命令。
? 注意:在当前用户的家目录下还会存在.hivehistory文件,此文件中保存了hive cli中执行的所有命令
? (1)命令行方式或者控制台模式
? (2)脚本运行方式(实际生产环境中用最多)
? (3)JDBC方式:hiveserver2
? ( 4)web GUI接口(hwi、hue等)
? (1)在命令行中可以直接输入SQL语句,例如:select * from table_name
? (2)在命令行中可以与HDFS交互,例如:dfs ls /
? (3)在命令行中可以与linux交互,例如:! pwd或者! ls /
? 注意:与linux交互的时候必须要加!
--hive直接执行sql命令,可以写一个sql语句,也可以使用;分割写多个sql语句
hive -e ""
--hive执行sql命令,将sql语句执行的结果重定向到某一个文件中
hive -e "">aaa
--hive静默输出模式,输出的结果中不包含ok,time token等关键字
hive -S -e "">aaa
--hive可以直接读取文件中的sql命令,进行执行
hive -f file
--hive可以从文件中读取命令,并且执行初始化操作
hive -i /home/my/hive-init.sql
--在hive的命令行中也可以执行外部文件中的命令
hive> source file (在hive cli中运行)
? 4、hive JDBC访问方式,之前讲过,不再赘述
? 5、Hive GUI方式
?