Hive Web Interface(HWI)简介:Hive自带了一个Web-GUI,功能不多,可用于效果展示,如果没有安装Hue的话,是个不错的选择。
由于hive-bin包中没有包含HWI的页面,只有Java代码编译好的jar包:hive-hwi-1.0.1.jar
因此需要下载源码从中提取jsp文件并打包成war文件到hive-lib目录中:
cd apache-hive-1.0.1-src/hwi
jar cfM hive-hwi-1.0.1.war -C web .
最后将hive-hwi-1.2.0.war放到hive-lib目录下即可启动hwi服务:
1 export hivelog='/usr/local/hive/logs' 2 3 #mkdir -p $hivelog 4 5 export HIVE_HOME='/usr/local/hive/apache-hive-1.0.1-bin' 6 7 $HIVE_HOME/hive --service hiveserver2 > $hivelog/hiveserver2.log 2>&1 & 8 9 $HIVE_HOME/hive --service metastore > $hivelog/metastore.log 2>&1 & 10 11 $HIVE_HOME/hive --service hwi > $hivelog/hwi.log 2>&1 &
但是发现hwi启动失败,报错:
ERROR hwi.HWIServer: HWI WAR file not found at /usr/local/hive/usr/local/hive/lib/hive-hwi-1.0.1.war
原因是hwi启动脚本($HIVE_HOME/bin/ext/hwi.sh)的bug:
export HWI_WAR_FILE=$(ls ${HIVE_LIB}/hive-hwi-*.war)
直接修改脚本为:
export HWI_WAR_FILE=$(ls $HIVE_LIB/hive-hwi-*.war | awk -F/ '{print "lib/"$NF}')
当然,也可以在配置文件hive-site.xml中指定:
1 <property> 2 3 <name>hive.hwi.war.file</name> 4 5 <value>lib/hive-hwi-1.0.1.war</value> 6 7 <description>This sets the path to the HWI war file, relative to ${HIVE_HOME}. </description> 8 9 </property> 10 11 <property> 12 13 <name>hive.hwi.listen.host</name> 14 15 <value>0.0.0.0</value> 16 17 <description>This is the host address the Hive Web Interface will listen on</description> 18 19 </property> 20 21 <property> 22 23 <name>hive.hwi.listen.port</name> 24 25 <value>9999</value> 26 27 <description>This is the port the Hive Web Interface will listen on</description> 28 29 </property>
接着访问URL:http://ubuntu:9999/hwi/
然而继续报错:
1 ERROR compiler.Compiler: Javac exception 2 Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. 3 Perhaps JAVA_HOME does not point to the JDK. It is currently set to "/usr/local/java/jre"
原因:jetty编译jsp类时,ant没有识别到正确的jdk路径。
解决:
ln -s $JAVA_HOME/lib/tools.jar $HIVE_HOME/lib/
或者cp $JAVA_HOME/lib/tools.jar /usr/lib/hive/lib/
接着访问URL:http://ubuntu:9999/hwi/
然而继续报错:jsp解析错误,原来是缺少jsp的包,把jasper-compiler-5.5.23.jar、jasper-runtime-5.5.23.jar和jsp-2.1-6.1.14.jar拷贝到hive的lib下。
接着访问URL:http://ubuntu:9999/hwi/
并执行创建表
CREATE TABLE table1(foo STRING , bar MAP<STRING, STRING>) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':' STORED AS TEXTFILE;
创建成功,心里一阵高兴,然后又创建一个表table2。
执行
load data local inpath "/usr/local/hive/apache-hive-1.0.1-bin/examples/files/map_table.txt" overwrite into table table1;
没有问题,看来没啥问题了。
然后执行
insert into table table2 select foo,bar from table1;
又报错了
原来hive-site.xml的配置文件jars.path有问题,注释掉配置。