Hive和Hbase有各自不同的特征:hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟的。Hive集成Hbase就是为了使用hbase的一些特性。
Hive和Hbase有各自不同的特征:Hive是高推迟、结构化和面向剖析的,HBase是低推迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高推迟的。Hive集成Hbase便是为了运用hbase的一些特性。
Hive承继HBase能够有用运用HBase数据库的存储特性,如行更新和列索引等。在集成的过程中留意保持HBase jar包的一致性。Hive集成HBase需要在Hive表和HBase表之间树立映射联系,也便是Hive表的列和列类型与HBase表的列族及列限定词树立相关。每一个在Hive表中的域都存在与HBase中,而在Hive表中不需要包括一切HBase中的列。HBase中的rowkey对应到Hive中为挑选一个域运用 :key 来对应,列族(cf:)映射到Hive中的其他一切域,列为(cf:cq)。
下面来简略实战下:
创立HBase表
- create'user1',{NAME=>'info',VERSIONS=>1}
向user表中刺进一些数据
- put'user1','1','info:name','zhangsan'
- put'user1','1','info:age','25'
- put'user1','2','info:name','lisi'
- put'user1','2','info:age','22'
- put'user1','3','info:name','wangswu'
- put'user1','3','info:age','21'
运用scan指令来查看下user表中的数据
- scan'user';
成果如下
ROW COLUMN+CELL
1 column=info:age, timestamp=1476773051604, value=25
1 column=info:name, timestamp=1476773046344, value=zhangsan
2 column=info:age, timestamp=1476773051685, value=22
2 column=info:name, timestamp=1476773051661, value=lisi
3 column=info:age, timestamp=1476773052632, value=21
3 column=info:name, timestamp=1476773051709, value=wangswu
3 row(s) in 0.0610 seconds
创立Hive中与HBase中对应的表
- SEThbase.zookeeper.quorum=hadoop001;
- SETzookeeper.znode.parent=/hbase;
- ADDjar/opt/bigdata/hive-1.2.1-bin/lib/hive-hbase-handler-1.2.1.jar;
- //user1表
- CREATEEXTERNALTABLEuser1(
- rowkeystring,
- infomap<STRING,STRING>
- )STOREDBY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
- WITHSERDEPROPERTIES("hbase.columns.mapping"=":key,info:")
- TBLPROPERTIES("hbase.table.name"="user1");
- //user2表
- CREATEEXTERNALTABLEuser2(
- rowkeystring,
- namestring,
- ageint
- )STOREDBY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
- WITHSERDEPROPERTIES("hbase.columns.mapping"=":key,info:name,info:age")
- TBLPROPERTIES("hbase.table.name"="user2");
查询user1,user2表数据
查询user1表数据
- select*fromuser1;
成果如下
- OK
- 1{"age":"25","name":"zhangsan"}
- 2{"age":"22","name":"lisi"}
- 3{"age":"21","name":"wangswu"}
- Timetaken:0.467seconds,Fetched:3row(s)
查询user2表数据
- select*fromuser2;
成果如下:
- OK
- 1zhangsan25
- 2lisi22
- 3wangswu21
- Timetaken:0.087seconds,Fetched:3row(s)
hive刺进数据到hbase
- INSERTINTOTABLEuser1
- SELECT'4'ASrowkey,
- map('name','lijin','age','22')ASinfo
- fromduallimit1;
知优网 » Hive和HBase整合(hive和hbase整合的效率)