Hive-0.12.0的Web接口HWI安装、配置、改造及使用
使用Hive的HWI接口,可以通过在Web页面上提交HQL查询操作,并浏览查询结果数据。默认情况下,HWI只支持浏览结果数据,不能够下载查询结果文件(当然,HWI可能也是考虑通过Web下载大量的结果数据,对服务器造成压力,或者处于安全方面的考虑)。我们对HWI进行了简单的改造,改造内容主要是增加了一个内置的文件服务器,可以通过页面进行查询,然后下载结果文件。
HWI安装配置
首先,要保证Hadoop集群正常运行,Hive能够正常使用。
先要安装Ant,如下所示:
这里,为了简化,我没有使用配置的方式,配置文件服务器的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,修改后的内容,如下所示:
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。
相关文章
- RHEL系统下安装atlassian-jira-5
- U盘安装Windows 7 + Ubuntu 14 双系统笔记
- CentOS6.3编译安装Memcached
- Mac OS下安装MongoDB以及配置方法总结【笔记】
- 安装配置 JDK 及 Java 环境
- centos8上安装ffmpeg4.2.2并做视频截图
- Openfiler03:open-iscsi安装配置及smbclient的安装
- Python - 安装并配置Anaconda环境
- LDAP安装配置(原创)
- MFS详解(六)——MFS Chunk Server服务器安装与配置
- Centos7.9虚拟机安装配置手册
- Jenkins安装与配置
- java语言学习003_开发环境基础配置和安装(jdk,jre,eclipse&myeclipse)
- Python之tensorboardX:tensorboardX库的简介、安装、使用方法之详细攻略
- 【华为云技术分享】关于Linux下Nginx的安装及配置
- 电脑中同时存在多个版本的Python,在指定版本中安装依赖库(值得学习)
- windows下nvm安装node之后npm命令找不到问题解决办法
- 安装cmake
- 【youcans的深度学习 03】PyTorch GPU版本安装与环境配置
- 【Deepin 20系统】Linux系统利用anaconda同时安装Tensorflow1.x和tensorflow2.x
- RocketMQ控制台安装教程
- win乌班图双系统安装(win11、Ubuntu20.04)及安装后的环境、软件配置
- libvirt零知识学习7 —— libvirt源码编译安装(5)
- Grafana 安装 7.3.5
- ROS Python 入门学习笔记 --0--ROS安装与配置