Hive(4)--Hive运行方式与参数配置

241 阅读2分钟

这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战

hive当中的参数、变量,都是以命名空间开头

命名空间读写权限含义
hiveconf可读写hive-site.xml 当中的各配置变量
例:hive --hiveconf hive.cli.print.header=true
system可读写系统变量,包含JVM运行参数等
例:system:user.name=root
env只读环境变量
例:env:JAVA_HOME
hive var可读写例:hive -d val=key

hive 参数设置方式

1、修改配置文件

${HIVE_HOME}/conf/hive-site.xml

2、启动hive cli时,通过--hive conf key = value 的方式进行设置

hive  --hiveconf  hive.cli.print.header=true

3、进入cli之后,通过使用set命令设置

set hive.cli.print.header=true;

或者直接查看值的信息,当不传值的时候,hive-cli会直接返回当前配置的值信息

例如:

hive> set hive.cli.print.header;
hive.cli.print.header=true
hive>

hive参数初始化配置 当前用户目录下的.hiverc文件→如果没有,可直接创建该文件,将需要设置的参数写到该文件中,hive启动运行时,会加载该文件中的配置。

vim  ~/.hiverc
### 加入
set hive.cli.print.header;

hive历史操作命令集

hive会保存用户的历史操作命令集,将其保存在文件 ~/.hivehistory

### 使用
cat  ~/.hivehistory
## 可以查看到用户在hive-cli的所有历史命令

Hive运行方式

命令行方式cli:控制台模式

###  也就是在安装hive 的机子上面执行hive启动hive-cli
###  在hive-cli中执行sql命令
		(1)在命令行中可以直接输入SQL语句,例如:select * from 表格名称
		(2)在命令行中可以与HDFS交互,例如:dfs ls /
		(3)在命令行中可以与linux交互,例如:! pwd或者! ls /

脚本运行方式(实际生产环境中用最多)

### 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中运行)

JDBC方式:使用进行链接hiveserver2

但是需要在配置当中配置

hive-site.xml 中配置好hive-server2的配置项

 <property>
        <!-- hive-server2用户名 -->
        <name>beeline.hs2.connection.user</name>
        <value>用户名</value>
    </property>

    <property>
        <!-- hive-server2密码 -->
        <name>beeline.hs2.connection.password</name>
        <value>密码</value>
    </property>
    <property>
        <!-- hive-server2端口 -->
        <name>beeline.hs2.connection.hosts</name>
        <value>ip:10000</value>
    </property>

接下来直接使用命令

# 启动hiveserver2服务
hive --service hiveserver2 &  ##加上&进行后台运行

## 使用beeline 进行hive链接
beeline -u "jdbc:hive2://hadoop3:10000/jacquesh_databases" -n hive2 -e "select * from moneys;"
### 结果可看下图

Untitled.png