hive网络(web ui)界面

  • 目前0.13.x版本还未集成hive-hwi-0.13.x.war包,所以只有根据源码打个war包了。我用的是0.8.1的war包,照样跑。
  • 在hive-site.xml里配置hvie主机地址和端口,还有war包的路径
  • 输入hive —service hwi命令,仔细看看报错没。如果没报错,那就在浏览器输入刚配的hvie主机地址和端口就可以访问了(http://rh1:9999/hwi/)。这对新手来说是非常有帮助的。
  • 弄好之后就可以查看数据库,创建会话、查询等等了。注意会话在hive重启之后将全部丢失。会话与认证(antorize)是关联的,一旦创建将不可改变。

hive的JDBC接口使用

  1. eclipse环境搭建
    — 创建java project,添加如下jar包:
    jar包
    — 首先开启hive监听用户的连接,执行(两个横线)hive —service hiveserver ;之后就可以开始编写hive程序了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//加载驱动
try {
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
//创建连接
Connection con = DriverManager.getConnection("jdbc:hive://rh1:10000/default", "", "");
Statement state = con.createStatement();
ResultSet res=state.executeQuery("create table t_test(userid int,username string)row format delimited " +
"fields terminated by '\t' stored as textfile");
if(res.next()){
System.out.println(res.getString(1));
}
String showTables ="show tables";
ResultSet res2 = state.executeQuery(showTables);
if(res2.next()){
System.out.println(res2.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}

hive的优化

  1. 优化主要在查询时,列裁剪(只查询需要的列),需设置hive.optimize.cp=true
  2. 分区裁剪:查询不必要的分区,在where后加分区目录名。例如:select * from t_data where part = 100;这样就只会查询t_data目录下part=100目录的数据
  3. join:在join是尽量将数据少的表放在join左边,这样可以减少内存溢出的风险
  4. map join:前提是在map端时可以加载到全部需要的数据
  5. group by:
    —map端部分聚合:需设定hive.map.aggr=true,hive.groupby.mapaggr.checkinterval=100000,用于设定map端聚合条数
    —数据倾斜:数据分布不均,需进行负载均衡。设定hive.groupby.skewindata=true
  6. 合并小文件:设置合并map端输出的文件,hive.merge.mapfiles=true。设置合并reduce端输出的文件,hive.merge.mapredfiles=true。设定合并文件大小:hive.merge.size.per.task=256乘以1000乘以1000(默认)
文章目录
  1. 1. hive网络(web ui)界面
  2. 2. hive的JDBC接口使用
  3. 3. hive的优化

Sides

IT技术分享博客