文档章节

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

脸大的都是胖纸
 脸大的都是胖纸
发布于 2015/04/22 11:56
字数 998
阅读 967
收藏 1
点赞 0
评论 0

(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

共有 人打赏支持
脸大的都是胖纸
粉丝 44
博文 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
Hive远程模式安装(1.00)

hiveserver2和metastore分离部署,元数据存储采用mysql,mysql与metastore分离部署。 mysql: 部署在ctrl节点 hiveserver2: 部署在ctrl和data01节点 metastore: 部署在data02和data03节点 be...

phacks
2016/09/11
12
0
ubuntu上基于HUE 4.0的环境构建和使用

先看下HUE的架构,如图 1. Hue是什么? Hue是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。 2. Hue能干什么? 访问HDFS和文件浏览 通过web调试和开发hive以...

wqhlmark64
2017/11/01
0
0
Hive-0.12.0-cdh5.0.1 安装[metasore 内嵌模式、本地模式、远程模式]

概述: 基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计. 组成: (1)用户接口:主要是cli , beeline , hiveserver2 ...

phacks
2016/09/11
34
0
Configuring Hive High Availability

Hive从0.14开始,使用Zookeeper实现了HiveServer2的HA功能(ZooKeeper Service Discovery),Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port。本文描述了...

candon123
2017/12/13
0
0
HIVE从入门到精通

1背景 应用于工业的商务智能收集分析所需的数据集正在大量增长,使得传统的数据仓库解决方案变得过于昂贵。Hadoop是一个流行的开源map-reduce实现,用于像yahoo, Facebook一类的公司。来存储...

超人学院
2016/08/02
191
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
3分钟前
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
30分钟前
0
0
NetCat Tutorials

Hacking with Netcat part 1: The Basics Hacking with Netcat part 2: Bind and reverse shells Hacking with Netcat part 3: Advanced Techniques 10 Introduction to Netcat - pdf NetCat......

zungyiu
30分钟前
0
0
Android Studio+NDK+Cmake 移植FFmpeg-4.0.2命令行工具

一、编译 参考大神的帖子,亲测一次编译成功:https://blog.csdn.net/bobcat_kay/article/details/80889398 鉴于以前查文档的经验,这里附上编写例子的时间:2018年7月22日 我用的是ubantu,...

她叫我小渝
30分钟前
0
0
mysql创建数据库

登录MYSQL mysql -u root -p 脚本创建数据库WeChat,并制定默认的字符集是utf8mb4。 CREATE DATABASE Wechat DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 授权 grant all......

niithub
45分钟前
0
0
svn: Unable to connect to a repository URL 的解决方案

错误图示: 解决办法:清除本地保存的授权信息; 1:右键点击本地文件夹,选择设置; TortoiseSVN -> Settings 2:在弹出的对话框中选择 Saved Data, 右侧选择:授权地方清理所有。 然后点确...

宁哥实战课堂
今天
1
0
sleep与wait的区别

Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为Thread.sleep(1000)的这一秒钟的时间内,线程的休眠是一直占用着CPU的时间...

码代码的小司机
今天
1
0
20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
今天
1
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
今天
1
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部