1、hive 命令行模式
直接输入/hive/bin/hive的执行程序,或者输入 hive –service cli 用于linux平台命令行查询,查询语句基本跟MySQL查询语句类似
2、hive web界面的启动方式
hive –service hwi 用于通过浏览器来访问hive
如果lib目录下没有hive-hwi-{version}.war包,我们要自己打包
官网下载源码包(比如1.10版本)
解压
$ tar zxvf apache-hive-1.1.0.src.tar.gz
再进入 hwi 目录,打包 war 文件(注意命令末尾有一个点.)
#cd apache-hive-1.1.0-src/hwi
#jar cvfM0 hive-hwi-1.1.0.war -C web/ .
打包完成后,有了我们需要的 war 文件,再复制到 $HIVE_HOME/lib 目录下
#cp hive-hwi-1.1.0.war /usr/local/hive-1.1.0/lib
另外我们还需要拷贝一个 Java 的 tools.jar 到 $HIVE_HOME/lib 目录下
cp /usr/local/jdk1.7.0_67/lib/tools.jar /usr/local/hive-1.1.0/lib
否则会出现类似于下面的错误(因为 JAVA_HOME 指到$JAVA_HOME/jre 下了,而其 lib下的 tools.jar 跟$JAVA_HOME/lib/tools.jar 不一样,编译的时候需要用到后者)
最后我们修改hive-site.xml文件
启动hwi,命令为: ./hive --service hwi
如果启动没有报错,可以访问http://localhost:9999/hwi
3、jdbc远程连接hiveserver2
在之前的学习和实践Hive中,使用的都是CLI或者hive –e的方式,该方式仅允许使用HiveQL执行查询、更新等操作,并且该方式比较笨拙单一。幸好Hive提供了轻客户端的实现,通过HiveServer或者HiveServer2,客户端可以在不启动CLI的情况下对Hive中的数据进行操作,两者都允许远程客户端使用多种编程语言如Java、Python向Hive提交请求,取回结果。HiveServer或者HiveServer2都是基于Thrift的,但HiveSever有时被称为Thrift
server,而HiveServer2却不会。既然已经存在HiveServer为什么还需要HiveServer2呢?这是因为HiveServer不能处理多于一个客户端的并发请求,这是由于HiveServer使用的Thrift接口所导致的限制,不能通过修改HiveServer的代码修正。因此在Hive-0.11.0版本中重写了HiveServer代码得到了HiveServer2,进而解决了该问题。HiveServer2支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供了更好的支持。
hive-site.xml的配置。因为我这里没有配置连接hive的用户名和密码,所以在我的java代码连接Hive时,不用输入用户名和密码。
先启动元数据库,在命令行中键入:hive --service metastore &
接下来开启hiveserver2服务:
在命令行中键入:hive --service hiveserver2 &
注意查看日志是否报错。