0%

背景

 hadoop体系中许多数据是存放在hbase中,为了便捷实用其中的数据,可以将数据迁移到hive中,通过hive sql 可以迅速便捷的获取并操作相应的数据,同时还可以实用hive sql实现一些mapreduce 操作。具体hive优势详见官网

目的

将hbase已存在的表数据迁移到hive中

操作步骤

版本环境

soft version
hive hive-1.1.0-cdh5.4.0
hbase hbase-1.0.0-cdh5.4.0

准备

首先要确保HIVE_HOME/lib 下HBase的jar包的版本要和实际环境中HBase的版本一致,需要用HBASE_HOME/lib/目录下得jar包:


hbase-client-1.0.0-cdh5.4.0.jar 
hbase-common-1.0.0-cdh5.4.0-tests.jar
hbase-common-1.0.0-cdh5.4.0.jar
hbase-protocol-1.0.0-cdh5.4.0.jar
hbase-server-1.0.0-cdh5.4.0.jar
htrace-core-3.0.4.jar
htrace-core-3.1.0-incubating.jar 

复制到HIVE_HOME/lib 下

操作及测试

  1. hbase现有数据表如下:
    
    hbase(main):002:0> scan 'truman'
    ROW                        COLUMN+CELL

row2 column=personal:city, timestamp=1458635086205, value=beijing
row2 column=personal:name, timestamp=1458635086189, value=reason2
row2 column=professional:designation, timestamp=1458635086210, value=test
1 row(s) in 0.5910 seconds

2. 新建hive与hbase关联表hbase_table_1


[root@127.0.0.1 hive-1.1.0-cdh5.4.0]$ bin/hive
Logging initialized using configuration in jar:file:/data/bigdata/hive-1.1.0-cdh5.4.0/lib/hive-common-1.1.0-cdh5.4.0.jar!/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive> CREATE external TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,personal:name") TBLPROPERTIES ("hbase.table.name" = "truman");
OK
Time taken: 0.857 seconds
  1. 即可在关联表中查询hbase中truman表的数据
    
    hive> show tables;
    OK
    hbase_table_1
    Time taken: 0.272 seconds, Fetched: 1 row(s)
    hive> select * from hbase_table_1;
    OK
    NULL    reason2
    Time taken: 0.625 seconds, Fetched: 1 row(s)

总结

 可以通过关联表实现hbase数据迁移到hive中,同理,hive中数据也可以通过该表迁移到hbase中。
在新建关联表一定要注意,hbase表存在则使用external。如果不存在则可以不需要该关键字

参考

http://www.micmiu.com/bigdata/hive/hive-hbase-integration/

问题1

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apach e/hadoop/hbase/mapreduce/TableInputFormatBase

** 解决方法:**


将hbase/lib下
hbase-common-1.0.0-cdh5.4.0-tests.jar
hbase-common-1.0.0-cdh5.4.0.jar
copy到hive/lib下面

问题2

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaExcep tion(message:MetaException(message:java.io.IOException: java.lang.reflect.InvocationTargetExc eption
** 解决方法:**


将hbase/lib下
htrace-core-3.0.4.jar
htrace-core-3.1.0-incubating.jar
copy到hive/lib下面

问题3

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:MetaException(message:Table truman already exists within HBase; use CREATE EXTERNAL TABLE instead to register it in Hive.)
** 解决方法:**


使用 external
例如:


 create external table hive(id string,name string ,ct string)stored by   'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping"= ":key,cf:name,cf:ct") tblproperties ("hbase.table.name" = "hbase");

问题4 hive中建hbase关联表失败

** 解决方法:**


首先要确保

HIVE_HOME/lib 
下HBase的jar包的版本要和实际环境中HBase的版本一致,需要用
HBASE_HOME/lib/
目录下得jar包:


hbase-client-1.0.0-cdh5.4.0.jar 
hbase-common-1.0.0-cdh5.4.0-tests.jar
hbase-common-1.0.0-cdh5.4.0.jar
hbase-protocol-1.0.0-cdh5.4.0.jar
hbase-server-1.0.0-cdh5.4.0.jar
htrace-core-3.0.4.jar
htrace-core-3.1.0-incubating.jar 

复制到

HIVE_HOME/lib 
下。

搭建hbase单机版

目的

 本教程为了搭建一个hbas单机版本,搭建好可以便于练习使用hbase,选用的版本不是最新的,但搭建原理都是一样的。单机版数据存储在本地文件上,使用自带的zookeeper。

准备

1.下载hbase-0.94.27

安装与部署

Markdown语法学习

第一节:章节 项目

  • 部署
  • 实验
  • 测试

1.开发

2.发布

第二节:杂乱

分割线



代码


private byte[] row;
    private byte[] family;
    private byte[] column;
    private byte[] data;
    
    /**
     * @return the row
     */
    public byte[] getRow() {
        return row;
    }


链接

对我的额非非医用氨基酸S耗时

[医用]:http:www.baidu.com “百度无所不能”

强调

斜体 强调呢哦荣挨打的好多

粗体 强调呢哦荣挨打的好多

引用

 一盏灯, 一片昏黄; 一简书, 一杯淡茶。 守着那一份淡定, 品读属于自己的寂寞。 保持淡定, 才能欣赏到最美丽的风景! 保持淡定, 人生从此不再寂寞。

表格

Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

原始代码



#Markdown语法学习
##第一节:章节 项目
- 部署
- 实验
- 测试

 1.开发

 2.发布


##第二节:杂乱
**分割线**
___
***
**代码**


private byte[] row;
    private byte[] family;
    private byte[] column;
    private byte[] data;
    
    /**
     * @return the row
     */
    public byte[] getRow() {
        return row;
    }


链接

对我的额非非医用氨基酸S耗时

[医用]:http:www.baidu.com"百度无所不能

强调

斜体 强调呢哦荣挨打的好多

粗体 强调呢哦荣挨打的好多

引用

 一盏灯, 一片昏黄; 一简书, 一杯淡茶。 守着那一份淡定, 品读属于自己的寂寞。 保持淡定, 才能欣赏到最美丽的风景! 保持淡定, 人生从此不再寂寞。

表格

Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1