设为首页 加入收藏

TOP

Hbase和Hive整合,Hive读Hbase的表内容
2019-02-19 13:44:56 】 浏览:89
Tags:Hbase Hive 整合 内容


经过一下午,终于测试成功。
前期:Hapood平台、Zookeeper、Hbase、Hive都安装好。(安装可以参考其它资源)
本Demo版本:jdk1.8.0_171,hadoop-2.7.3,zookeeper-3.4.9,mysql-5.6.40-linux-glibc2.12-x86_64,hbase-1.2.4,apache-hive-2.1.1-bin
root@master lib]# echo $HADOOP_HOME
/application/software/hadoop-2.7.3
[root@master lib]# echo $HBASE_HOME
/application/software/hbase-1.2.4
[root@master lib]# echo $HIVE_HOME
/application/software/apache-hive-2.1.1-bin

1. 将Hive安装目录lib中的相关:.jar包删除,并Hbase的lib的相应该.jar包到Hive

通过两张图可以看出版本不一致。

下图为Hive的lib库:

下图为Hbase的lib库:

(主要保持Hive和Hbase的.jar版本一致,不一致以Hbase为主)
#rm -rf $HIVE_HOME/lib/hbase*.jar
#rm -rf $HIVE_HOME/lib/zookeeper-*.jar

重新Copy Hbase的lib的相应该.jar包到Hive
#cp $HBASE_HOME/lib/hbase*.jar $HIVE_HOME/lib
#cp $HBASE_HOME/lib/zookeeper*.jar $HIVE_HOME/lib

2. 将Hive lib目录中hive-hbase-handler-2.1.1.jar 拷到Hbase lib目录下。
开始实验只做上一步,没成功,于又找了个资料,建议做这一步,于是做了这一步后,成功了。(不知道是否与这有关,请相关专家解释)
(因为Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-.jar工具类来实现。所以只需要将hive的 hive-hbase-handler-.jar 复制到hbase/lib中就可以了。)

#cp $HIVE_HOME/libhive-hbase-handler-2.1.1.jar $HBASE_HOME/lib

3. 修改hive conf中hive-site.xml配置文件

以下为新增加内容:

4.修改hive-env.sh配置文件
#cd $HIVE_HOME/conf
#cp hive-env.sh.template hive-env.sh
增加(修改)以下内容,如图:

5.启动Hive

#nohup hive --service metastore >> /application/software/apache-hive-2.1.1-bin/metastore.log 2>&1 &
#nohup hive --service hiveserver2 >> /application/software/apache-hive-2.1.1-bin/hiveserver.log 2>&1 &
#ps aux | grep hive

6.验证是否成功,
场景:在Hbase中已有一张表名为blog的表(下图),在Hive中创建一张外部表,来读取Hbase中的blog表。

下面为在Hive中操作:

#hive
> show tables;
OK
brand_dimension
record
record_orc
record_parquet
record_partition
stocks
stu
user_dimension
Time taken: 0.193 seconds, Fetched: 8 row(s)
hive> create external table blog_hive_hbase(key string,content string,tag string,title string,age int,gender string,name string)
> stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> with serdeproperties("hbase.columns.mapping"=":key,article:content,article:tag,article:title,author:age,author:gender,author:name")
> tblproperties("hbase.table.name"="blog");
OK
Time taken: 2.578 seconds
hive> show tables;
OK
blog_hive_hbase
brand_dimension
record
record_orc
record_parquet
record_partition
stocks
stu
user_dimension
Time taken: 0.151 seconds, Fetched: 9 row(s)

在Hive中查看:

在Hbase新增一行数据:

在Hive中查看:

留有一个遗憾(如下图):通过beeline连接hive,show tables可以,但是select表报错,找了好多资料,也未找到答案,希望有同学遇到类似错误,不吝赐教。谢谢!

完。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于python在爬虫scrapy框架,使.. 下一篇传统的行存储和(HBase)列存储的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目