配置hive环境变量
vi /etc/profile
exportHIVE_HOME=/data/soft/apache-hive-3.1.2-bin
source /etc/profile
JDBC方式
这里我们创建一个maven项目
com.bigdata.hive
添加Hive开发依赖
hive JDBC驱动如下
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.2</version>
</dependency>
核心代码:
先启动hiveserver2服务
/**
* JDBC代码操作 Hive
*/
publicclassHiveJdbcDemo {
publicstaticvoidmain(String[] args) throwsException{
//指定hiveserver2的连接
StringjdbcUrl="jdbc:hive2://192.168.197.104:10000";
//获取jdbc连接,这里的user使用root,就是linux中的用户名,password随便指定即
Connectionconn=DriverManager.getConnection(jdbcUrl, "root", "any")
//获取Statement
Statementstmt=conn.createStatement();
//指定查询的sql
Stringsql="select * from t1";
//执行sql
ResultSetres=stmt.executeQuery(sql);
//循环读取结果
while (res.next()){
System.out.println(res.getInt("id")+"\t"+res.getString("name"));
}
}
}
这里处理下log4j的信息
排除hive自带的log4j
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.2</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
资源目录下新增log4j.xml
重新打印,即可解决log4j报错信息问题
使用临时参数
在hive命令行中可以使用set命令临时设置一些参数的值
其实就是临时修改hive-site.xml中参数的值
通过set命令设置的参数只在当前会话有效,退出重新打开就无效了
在hive-site.xml中有一个参数是 hive.cli.print.current.db ,这个参数可以显示当前所在的数据库名 称,默认值为 false 。 在这里我们设置为true。
set hive.cli.print.current.db = true;
还有一个参数 hive.cli.print.header 可以控制获取结果的时候显示字段名称,这样看起来会比较清晰
set hive.cli.print.header = true;
修改 ~/.hiverc,保留配置仅对当前用户生效
vi ~/.hiverc
set hive.cli.print.current.db = true;
set hive.cli.print.header = true;
重新进入看下效果
配置Hive日志
删除重复的日志信息
hive中的一个日志依赖包和hadoop中的日志依赖包冲突
我们移除hive的日志依赖包
mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak
配置Hive日志信息目录
mv hive-log4j2.properties.template hive-log4j2.properties
vi hive-log4j2.properties
配置信息如下
property.hive.log.level = WARN
property.hive.root.logger = DRFA
property.hive.log.dir = /data/hive_repo/log
property.hive.log.file = hive.log
property.hive.perflogger.log.level = INFO
这样后期分析日志就可以到 /data/hive_repo/log 目录下去查看了。