文档章节

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

脸大的都是胖纸
 脸大的都是胖纸
发布于 2015/04/22 11:56
字数 998
阅读 997
收藏 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
Hive2.x、HiveServer、HiveServer2简述及Beeline使用

Hive2.x hive2.x特性 LLAP(Live Long and Process)Hive2.1进行了极大的性能优化。在Hive2.x开启LLAP与Apache Hive1.x进行对比测试,其性能提升约25倍。 支持使用HPL/SQL的存储过程,Hive2...

PeakFang-BOK
10/10
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

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之单例模式

单例模式核心:保证一个类只有一个对象 单例模式分为五种:懒汉式、饿汉式、双重检测锁式、静态内部类式、枚举式 五种模式的特点:懒汉式---线程安全,调用效率高,不能延时加载 饿汉式---线...

森林之下
今天
2
0
markdown语法

这篇博客是本人在使用markdown语法过程中,用于记录一些自己总是会忘记的语法,并且会持续更新; 如何增加批注/备注:>; 这是一条备注/引言 如何手动换行,行末两次空格;

BlackCanary
今天
3
0
redis 设置外网可访问

前提是你已经把redis的端口放到了防火墙计划中,  /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT /etc/rc.d/init.d/iptables save 更改redis.conf 文件 bind 127.0.0.1prot...

时刻在奔跑
今天
2
0
css3隐藏滚动条

chrome 和Safari .element::-webkit-scrollbar { width: 0 } IE 10+ .element { -ms-overflow-style: none; } Firefox .element { overflow: -moz-scrollbars-none; } firefox这个没试过~啦啦......

呵呵闯
今天
3
0
Poco官方PPT_020-ErrorHandlingAndDebugging双语对照翻译

因工作需要用到这一块的功能,所以直接翻译了一下 此PPT来源于官方文件,地址https://pocoproject.org/documentation.html

CHONGCHEN
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部