文档章节

通过hiveserver远程服务构建hive web查询分析工具

脸大的都是胖纸
 脸大的都是胖纸
发布于 2015/04/22 11:56
字数 998
阅读 981
收藏 1

(1)hive 三种启动方式及用途,本文主要关注通过hiveserver(可jdbc连接)的方式启动

 1, hive  命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive --service cli

       用于linux平台命令行查询,查询语句基本跟mysql查询语句类似

 2, hive  web界面的启动方式,hive --service hwi  

      用于通过浏览器来访问hive,提供基本的基于web的hive查询服务,可以看作是hive数据平台的demo,

具体用法可见:http://www.cnblogs.com/gpcuster/archive/2010/02/25/1673480.html   使用HIVE的WEB界面:HWI

3, hive  远程服务 (端口号10000) 启动方式,nohup ./hive --service hiveserver >/dev/null 2>/dev/null &

      用java等程序实现通过jdbc等驱动的方式访问hive就用这种起动方式了,这个是程序员最需要的方式了。

开源工具phphiveadmin就采用的这种方式,这种方式其实启动了一个 Hive Thrift Server ,允许你使用任意语言

与hive server通信,所以如果你不会java,语言将不会成为问题。

(2)给出一个基于hiveserver的demo,这个demo可以扩展成一个基于web操作hive的离线分析工具,类似phphiveadmin。

1、demo部署路径如下:

注:开发环境:myeclipse 8.5, tomcat 6.0


2、code:


2.1 HiveTestCase.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
 
publicclassHiveTestCase {
    publicstaticvoidmain(String[] args)throwsException {
        String querySQL ="SELECT a.name, a.id, a.sex FROM com58 a where a.id > 100 and a.id < 110 and sex='male'";
        hive2Txt(querySQL);
    }
 
    privatestaticvoidhive2Txt(String querySQL)
            throwsClassNotFoundException, SQLException {
        Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
 
        // String dropSQL = "drop table com58";
        // 1 male 29 3d649ecc 3d649ecc@qq.com 20110304 20110402
        // 1.id 2.sex 3.age 4.name 5.mail 6.sDate 7.eDate
        // String createSQL =
        // "create table com58 (id int, sex string, age int, name string, mail string, sDate bigint, eDate bigint) row format delimited fields terminated by ' '";
        // hive插入数据支持两种方式一种:load文件,令一种是 CTAS(create table as select...
        // 从另一个表中查询进行插入)
        // hive是不支持insert into...values(....)这种操作的
        // String insterSQL =
        // "LOAD DATA LOCAL INPATH '/home/june/hadoop/hadoop-0.20.203.0/tmp/1.txt' OVERWRITE INTO TABLE com58";
 
        Connection con = DriverManager.getConnection(
                "jdbc:hive://localhost:10000/default","","");
        Statement stmt = con.createStatement();
        // stmt.executeQuery(dropSQL); // 执行删除语句
        // stmt.executeQuery(createSQL); // 执行建表语句
        // stmt.executeQuery(insterSQL); // 执行插入语句
        ResultSet res = stmt.executeQuery(querySQL);// 执行查询语句
 
        while(res.next()) {
            System.out.println("name:\t"+ res.getString(1) +"\tid:\t"
                    + res.getString(2) +"\tsex:\t"+ res.getString(3));
        }
    }
}


2.2 hiveSelect.jsp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<%@ page language="java"contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<%@pageimport="java.util.*"%>
<% @page
    import="java.io.File,
    java.io.FileWriter,
    java.io.IOException,
    java.sql.Connection,
    java.sql.DriverManager,
    java.sql.ResultSet,
    java.sql.SQLException,
    java.sql.Statement"%>
 
 
<%
    Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
    String table = request.getParameter("table");
    String querySQL ="select * from "+ table +" limit 10";
    Connection con = DriverManager.getConnection(
            "jdbc:hive://localhost:10000/default","","");
    Statement stmt = con.createStatement();
    //      stmt.executeQuery(dropSQL); // 执行删除语句
    //      stmt.executeQuery(createSQL); // 执行建表语句
    //      stmt.executeQuery(insterSQL); // 执行插入语句
    ResultSet res = stmt.executeQuery(querySQL);// 执行查询语句
 
    FileWriter fw =newFileWriter("/home/june/a.txt");
    while(res.next()) {
        System.out.println("name:\t"+ res.getString(1) +"\tid:\t"
                + res.getString(2) +"\tsex:\t"+ res.getString(3));
        fw.write("name:\t"+ res.getString(1) +"\tid:\t"
                + res.getString(2) +"\tsex:\t"+ res.getString(3)
                +"\n");
    }
    fw.flush();
    fw.close();
%>
 
<html>
    <head>
        <meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
        <title>Insert title here</title>
    </head>
    <body>
 
    </body>
</html>
2.3 select.html
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!DOCTYPEhtml PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
        <title>Insert title here</title>
    </head>
    <html>
        <head>
            <title>Hive Web Interface-Create a Hive Session</title>
        </head>
        <body>
            <table>
                <tr>
 
                    <tdvalign="top">
                        <h2>
                            select hive table to file.
                        </h2>
                        <formaction="hiveSelect.jsp">
                            <tableborder="1">
                                <tr>
                                    <td>
                                        Session Name
                                    </td>
                                    <td>
                                        <inputtype="text"name="table"value="table">
                                    </td>
                                </tr>
                                <tr>
                                    <tdcolSpan="2">
                                        <inputtype="submit">
                                    </td>
                                </tr>
                            </table>
                        </form>
                    </td>
                </tr>
            </table>
        </body>
    </html>
 
</html>
2.4 最后的结果是在相应的路径下创建一个文件输出,后续你可以用javaMail做一个邮件提醒+下载链接的功能,这样一个简易的基于hive的web分析工具就完工了。

本文转载自:http://my.oschina.net/leejun2005/blog/93457

共有 人打赏支持
脸大的都是胖纸
粉丝 46
博文 53
码字总数 32844
作品 0
深圳
其他
通过hiveserver远程服务构建hive web查询分析工具

(1)hive 三种启动方式及用途,本文主要关注通过hiveserver(可jdbc连接)的方式启动 1, hive 命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive --service cli 用于linux平台...

大数据之路
2012/12/02
0
0
Hive 入门介绍

1 Hive是什么 Hive是构建在Hadoop之上的数据仓库平台; Hive是一个SQL解析引擎,它将SQL语句转译成MapReduce任务,并在Hadoop上执行; Hive表是HDFS的一个文件目录,一个表名对应一个目录名,...

林中漫步
2016/07/13
41
0
Hive源码剖析之HiveServer2服务启动过程

一、前言 前段时间用Hive JDBC出现了阻塞问题,客户端一直处于等待状态,为了解决该问题,花了几天研究了Hive源码,于是准备写成系列博文,与大家分享其中的心得。有不当之处,请大家更正。 ...

冷血狂魔
2016/08/27
140
0
hive 连接url及acid事务配置

apache hive: 数据仓库,通过sql语句很方便的读、写、管理分布式系统中的大数据集,hadoop上层的工具。 1.通过sql语句访问数据,可以支持ETL(extract/transform/load)、报表和数据分析等。...

枯藤KT
2016/08/02
37
0
hive(02)、数据仓库Hive的基本使用

在上篇《 hive(01)、基于hadoop集群的数据仓库Hive搭建实践 》一文中我们搭建了分布式的数据仓库Hive服务,本文主要是在上文的基础上结合Hadoop分布式文件系统,将结构化的数据文件映射为一张...

MaxBill
01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之高级类型的字符串字面量类型

转发TypeScript基础入门之高级类型的字符串字面量类型 高级类型 字符串字面量类型 字符串字面量类型允许你指定字符串必须的固定值。 在实际应用中,字符串字面量类型可以与联合类型,类型保护...

durban
15分钟前
2
0
iOS权限授权添加

<!-- 相册 --> <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问相册</string> <!-- 相册写入 --> <key>NSPhotoLibraryAddUsageDescription</key> <string>App......

RainOrz
19分钟前
1
0
支配树(Dominator Tree)

MAT中的支配树 在使用MAT分析项目的内存泄漏问题时,其中有一个支配树(Dominator)视图。如果我们把Java对象之间的引用关系看做一张有向图(可以存在环)的话,对象的支配树体现了对象之间的...

akane_oimo
21分钟前
1
0
xshell官网下载及安装(免费版本)

百度搜索xshell,点击xshell官网下载链接,如图 然后点击下图的按钮 点击Latest Products,可以下载最新版本,选择要下载的版本,点击下载 选择上面红框里面的,并填写内容,submit之后会有邮...

曾大大胖
26分钟前
2
0
Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博

兼容SDK 18以上的系统,直接调用系统分享功能,分享文本、图片、文件到第三方APP,如:微信、QQ、微博等 因为偷懒,可直达微信、朋友圈、QQ、QQ空间、微博的分享仅写了图片分享的,其他的文本...

她叫我小渝
27分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部