zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Hive-0.12.0的Web接口HWI安装、配置、改造及使用

安装配置接口Web hive 改造 使用
2023-09-14 08:57:29 时间

使用Hive的HWI接口,可以通过在Web页面上提交HQL查询操作,并浏览查询结果数据。默认情况下,HWI只支持浏览结果数据,不能够下载查询结果文件(当然,HWI可能也是考虑通过Web下载大量的结果数据,对服务器造成压力,或者处于安全方面的考虑)。我们对HWI进行了简单的改造,改造内容主要是增加了一个内置的文件服务器,可以通过页面进行查询,然后下载结果文件。

HWI安装配置

首先,要保证Hadoop集群正常运行,Hive能够正常使用。
先要安装Ant,如下所示:

wget http://mirrors.hust.edu.cn/apache//ant/binaries/apache-ant-1.9.4-bin.tar.gz

这里,为了简化,我没有使用配置的方式,配置文件服务器的resource base目录,直接写死路径在代码里面,默认是/download目录,主要的是,这个目录需要设置一下权限,可以允许任何人写,但是不能覆盖别人已经写的文件(执行查询生成的结果文件):

chmod 1777 /download
增加一个ServletContextListener

主要用来启动文件服务器,实现类FileServerContextListener的代码如下所示:

package org.shirdrn.hadoop.hive.jetty;
public class FileServerContextListener implements javax.servlet.ServletContextListener {
listener-class org.shirdrn.hadoop.hive.jetty.FileServerContextListener /listener-class
增加下载链接,设置DDL、DML操作限制

因为我们可能需要将HWI暴露给组织内部的其他项目团队使用,只允许他们查询,就应该限制Hive的DDL、DML操作,不运行他们建库建表、
这里,需要修改页面session_manage.jsp,修改后的内容,如下所示:

%@page import="org.apache.hadoop.hive.hwi.*" %
String randomFile = String.valueOf(System.currentTimeMillis()) + ".txt"; // 生成随机文件名称
Session Kill: a href="/hwi/session_kill.jsp?sessionName= %=sessionName% " %=sessionName% /a br
a href="/hwi/session_diagnostics.jsp?sessionName= %=sessionName% " i /i Diagnostics /a
if (sess.getErrorFile()==null) { out.print(""); } else { out.print(sess.getErrorFile()); }

HWI重新构建

我们只需要将我们自己实现的代码部分,打包到WAR文件里面就可以,因为默认的HWI的Java实现部分,可以在Hive的软件包中找到,可以查看${HIVE_HOME}/lib/hive-hwi-0.12.0.jar。上面我们改造过程中实现了一个Jetty文件服务器,编译完成后,需要删除默认目录${HWI_HOME}\target\WEB-INF\classes下面,不是我们改造后增加的类的类文件,然后就可以执行如下命令构建:

cd ${HWI_HOME}\target

然后,将生成的hwi文件,拷贝到部署Hive的对应目录${HIVE_HOME}/lib/下面即可,启动HWI服务:

hive --service hwi /tmp/hwi/hwi.log

然后,就可以通过Web页面访问。

HWI使用

访问页面,例如我的是http://10.10.2.245:9999/hwi,然后,可以看到HWI首页,执行如下操作进行查询:

点击“Authorize”,填写“User”和“Groups”的内容,例如都是hadoop,然后点击提交按钮“Submit”; 点击“Create Session”,填写“Session name”,例如MYSESSION[hadoop],然后点击提交按钮“Submit”; 这时,进入到Manage Session MYSESSION[hadoop]页面,可以在“Query”中输入HQL查询语句,“Start Query”选择“YES”,然后击提交按钮“Submit”; 可以通过“View File”和“Result Bucket”查看结果内容; 可以通过我们改造后的“Download File”链接,进行查询结果文件的下载。
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot) 也许有人从未听说过Python,但是不会有人没听说过Java,它作为一个拥有悠久历史的老牌编程语言,常年雄踞TIOBE编程语言榜首,其顶尖的霸主地位不可撼动,而M1 mac业已发布了一段时间,作为跨时代的顶级芯片系统,这两大巨头能否珠联璧合,让开发者们猛虎添翼、更上层楼?本次我们尝试在M1 mac系统中搭建Java开发环境,并且集成目前Web开发领域红的发紫的Springboot框架,另外,谁说玩儿Java就必须得用Eclipse或者IntelliJ IDEA?我们就骄傲地使用Vscode。