hbasehive整合
由于项目需要,使用hbase来存储数据。使用hive来查询数据。所以这里需要把hbase 和 hive整合使用。在网上找了下资料,其实也挺简单的,主要在配置。下面我把整合的步骤做一个记录。
成都创新互联公司,为您提供成都网站建设、网站制作公司、网站营销推广、网站开发设计,对服务卫生间隔断等多个行业拥有丰富的网站建设及推广经验。成都创新互联公司网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!
1.环境:hadoop1.0.4,hbase0.92.0,hive0.9.0
2.在hadoop hbase hive 环境都配好的情况下(如果没有配置好请参考其他相关文档),进行如下操作。
- 拷贝hbase-0.92.0.jar hbase-0.92.0-tests.jar 到 hive/lib 目录下(hive为hive的安装根目录)。如果在hive下已经存在这两个包的话,请将其删除以后再进行拷贝。
- 修改hive/conf下的hive-site.xml文件。在底部添加如下内容:
注意:我这里的hive-site.xml是自行创建的文件,在默认情况下不存在这个文件。
- 拷贝hbase-0.92.0.jar到所有hadoop节点(包括master)的hadoop/lib下。
- 拷贝hbase/conf下的hbase-site.xml文件到所有hadoop节点(包括master)的hadoop/conf下。
3.现在你可以尝试启动hive了。
mt@ubuntu:~/hive$ bin/hive
接着可以做下测试了。
- 创建hbase识别的数据库:
CREATE TABLE hbase_table_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");
hbase.table.name 定义在hbase的table名称
hbase.columns.mapping 定义在hbase的列族
- 使用sql导入数据 :
新建hive的数据表
CREATE TABLE pokes (foo INT, bar STRING);
批量插入数据
LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE
使用sql导入hbase_table_1
INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;
-
查看数据
hive> select * from hbase_table_1;
这时可以登录Hbase去查看数据了.
hbase(main):001:0> describe 'xyz'
hbase(main):002:0> scan 'xyz'
hbase(main):003:0> put 'xyz','100','cf1:val','www.360buy.com'
这时在Hive中可以看到刚才在Hbase中插入的数据了。
hive> select * from hbase_table_1
-
hive访问已经存在的hbase
使用CREATE EXTERNAL TABLE
CREATE EXTERNAL TABLE hbase_table_2(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")
TBLPROPERTIES("hbase.table.name" = "some_existing_table");
本文标题:hbasehive整合
转载来于:http://pwwzsj.com/article/ghppeg.html