@zh350229319
2018-09-20T06:53:03.000000Z
字数 3597
阅读 624
hive
export HIVE_HOME=/application/hiveexport PATH=$HIVE_HOME/bin:$PATH
在hive-site.xml中添加,$HIVE_HOME改成hive的目录,不能使用HIVE_HOME,system:user.name替换成自己的用户名
<property><name>system:java.io.tmpdir</name><value>$HIVE_HOME/tmpdir</value></property><property><name>system:user.name</name><value>hadoop</value></property>
加入hive-hbase-handler引用
<property><name>hive.aux.jars.path</name><value>/home/hadoop/application/hive/lib/hive-hbase-handler-2.3.2.jar</value>
在hive 2.3.2的lib目录中已包含hbase相关的jar包,如果没有,参考以下配置
<property><name>hive.aux.jars.path</name><value>file:///home/hadoop/hive/lib/hive-hbase-handler-2.3.2.jar,file:///home/hadoop/hive/lib/guava-14.0.1.jar,file:///home/hadoop/hbase/lib/hbase-common-1.1.4.jar,file:///home/hadoop/hbase/lib/hbase-client-1.1.4.jar,file:///home/hadoop/hbase/lib/hbase-server-1.1.4.jar,file:///home/hadoop/hbase/lib/hbase-hadoop2-compat-1.1.4.ja,file:///home/hadoop/hbase/lib/netty-all-4.0.23.Final.jar,file:///home/hadoop/hbase/lib/hbase-protocol-1.1.4.jar,file:///home/hadoop/zookeeper/zookeeper-3.4.5.jar</value></property>
hive内部表
create table hive2(row_key string, fpdm string, fphm string, kprq string, xhdwsbh string);
hbase外部表
CREATE EXTERNAL TABLE hive_test1(row_key string, fpdm string,fphm string ,kprq string,xhdwsbh string)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key, i:fpdm, i:fphm, i:kprq, i:xhdwsbh")TBLPROPERTIES("hbase.table.name" = "iw:test01");
hive2.x官方已经不推荐使用Hive on MR,于是集成Spark
基于Spark 2.0.0搭建Hive on Spark环境
Hive on Spark: Getting Started
hive只支持特定关系的spark版本,详细可以看官方文档Version Compatibility章节,本文使用hive-2.3.2、spark-2.0.2和hadoop-2.6
spark官网提供的spark已经集成了hive-1.2.1,使用hive on spark必须编译一个不集成hive的版本,编译命令如下
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.6,parquet-provided"
根据启动的用户不同,位于一下路径:
/tmp/hadoop/hive.log
/tmp/root/hive.log
beeline无法连接时有多种可能,首先进入beeline使用!connect jdbc:hive2:// hadoop命令,密码为空,测试是否能连接上,如果不行则hiveserver没有启动
本地连接成功后,远程连接仍然报错,需要配置hadoop的core-site.xml,以下为使用通配的方式。
<property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value><description>Allow the superuser oozie to impersonate any members of the group group1 and group2</description></property><property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value><description>The superuser can connect only from host1 and host2 to impersonate a user</description></property>
或者配置具体的用户和hosts。
<property><name>hadoop.proxyuser.hadoop.groups</name><value>hadoop</value><description>Allow the superuser oozie to impersonate any members of the group group1 and group2</description></property><property><name>hadoop.proxyuser.hadoop.hosts</name><value>127.0.0.1,localhost</value><description>The superuser can connect only from host1 and host2 to impersonate a user</description></property>
然后再使用!connect jdbc:hive2://ip:port/default
hive2提供自带的json serde,使用命令可以临时加入会话中
ADD JAR /HIVE_HOME/hcatalog/share/hcatalog/hive-hcatalog-core-2.1.1.jar;
hive2自带的serde
在hive根目录下创建目录auxlib,将jar包放入该目录下
重启hiveserver
需要在hive的conf hive-site.xml加入一个hbase zk的属性
<property><name>hbase.zookeeper.quorum</name><value>host1,host2</value><description></description></property>
权限问题造成,修改hive-site.xml
<property><name>hive.server2.enable.doAs</name><value>false</value></property>