Hive和Hbase有各自不同的特征:hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟的。Hive集成Hbase就是为了使用hbase的一些特性。

Hive和HBase整合(hive和hbase整合的效率)  Hive HBase 集成 第1张

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表

  1. create'user1',{NAME=>'info',VERSIONS=>1}

向user表中刺进一些数据

  1. put'user1','1','info:name','zhangsan'
  2. put'user1','1','info:age','25'
  3. put'user1','2','info:name','lisi'
  4. put'user1','2','info:age','22'
  5. put'user1','3','info:name','wangswu'
  6. put'user1','3','info:age','21'

运用scan指令来查看下user表中的数据

  1. 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中对应的表

  1. SEThbase.zookeeper.quorum=hadoop001;
  2. SETzookeeper.znode.parent=/hbase;
  3. ADDjar/opt/bigdata/hive-1.2.1-bin/lib/hive-hbase-handler-1.2.1.jar;
  4. //user1表
  5. CREATEEXTERNALTABLEuser1(
  6. rowkeystring,
  7. infomap<STRING,STRING>
  8. )STOREDBY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
  9. WITHSERDEPROPERTIES("hbase.columns.mapping"=":key,info:")
  10. TBLPROPERTIES("hbase.table.name"="user1");
  11. //user2表
  12. CREATEEXTERNALTABLEuser2(
  13. rowkeystring,
  14. namestring,
  15. ageint
  16. )STOREDBY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
  17. WITHSERDEPROPERTIES("hbase.columns.mapping"=":key,info:name,info:age")
  18. TBLPROPERTIES("hbase.table.name"="user2");

查询user1,user2表数据

查询user1表数据

  1. select*fromuser1;

成果如下

  1. OK
  2. 1{"age":"25","name":"zhangsan"}
  3. 2{"age":"22","name":"lisi"}
  4. 3{"age":"21","name":"wangswu"}
  5. Timetaken:0.467seconds,Fetched:3row(s)

查询user2表数据

  1. select*fromuser2;

成果如下:

  1. OK
  2. 1zhangsan25
  3. 2lisi22
  4. 3wangswu21
  5. Timetaken:0.087seconds,Fetched:3row(s)

hive刺进数据到hbase

  1. INSERTINTOTABLEuser1
  2. SELECT'4'ASrowkey,
  3. map('name','lijin','age','22')ASinfo
  4. fromduallimit1;
转载请说明出处
知优网 » Hive和HBase整合(hive和hbase整合的效率)

发表评论

您需要后才能发表评论