通过Hive查询 HBase
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,线上的zipkin的存储是利用的HBase0.94.6,一开始Dev想直接写MR来做离线分析,后来聊了下发现走Hive会提高开发的效率(当然,这里查询HBase的SQL接口还有phoenix,Impa
千家信息网最后更新 2026年11月03日通过Hive查询 HBase
线上的zipkin的存储是利用的HBase0.94.6,一开始Dev想直接写MR来做离线分析,后来聊了下发现走Hive会提高开发的效率(当然,这里查询HBase的SQL接口还有phoenix,Impala等,只不过都还不够成熟,并且是离线分析不是adhocquery,BTW,前阶段和intel的聊过他们的Hive Over HBase是跳过MR的,效率非常赞,不过钱也略贵了=.=);
其实用Hive查询HBase非常简单:
//首先在HBase里建一张表并插入几条数据hbase(main):003:0> create 'table_inhbase','cf'0 row(s) in 1.2060 seconds=> Hbase::Table - table_inhbasehbase(main):004:0> listTABLE table_inhbase 1 row(s) in 0.0350 secondshbase(main):005:0> put 'table_inhbase','row1','cf:a','value1'0 row(s) in 0.0830 secondshbase(main):006:0> put 'table_inhbase','row2','cf:a','value2'0 row(s) in 0.0200 secondshbase(main):007:0> put 'table_inhbase','row3','cf:b','value3'0 row(s) in 0.0180 secondshbase(main):008:0> scan 'table_inhbase'ROW COLUMN+CELL row1 column=cf:a, timestamp=1383736436773,value=value1 row2 column=cf:a, timestamp=1383736462917,value=value2 row3 column=cf:b, timestamp=1383736476017,value=value3 3 row(s) in 0.0660 seconds//在Hive里创建一个外部表,注意要在hive-site.xml加入ZK,否则会hang住,一直去重试localhost:2181CREATE EXTERNAL TABLE ext_table_inhbase(key string, avalue string,bvaluestring) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" ="cf:a,cf:b") TBLPROPERTIES("hbase.table.name" = "table_inhbase");hive> CREATE EXTERNAL TABLE ext_table_inhbase(key string, avaluestring,bvalue string) > STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler' > WITH SERDEPROPERTIES("hbase.columns.mapping" = "cf:a,cf:b") > TBLPROPERTIES("hbase.table.name" ="table_inhbase");OK//注意,这里要加入这2个jar包:hbase-0.94.6-cdh5.4.0.jar,hive-hbase-handler-0.10.0-cdh5.4.0.jar否则会抛出异常hive> select * from ext_table_inhbase;OKrow1 value1 NULLrow2 value2 NULLrow3 NULL value3Time taken: 0.609 secondshive> select key,avalue from ext_table_inhbase;java.io.IOException: Cannot create an instance of InputSplit.apache.hadoop.hive.hbase.HBaseSplit:Classorg.apache.hadoop.hive.hbase.HBaseSplit not found at org.apache.hadoop.hive.ql.io.HiveInputFormat$HiveInputSplit.readFields(HiveInputFormat.java:146) atorg.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:73) atorg.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:44) atorg.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:356) atorg.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:388) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332) atorg.apache.hadoop.mapred.Child$4.run(Child.java:268) atjava.security.AccessController.doPrivileged(Native Method) atjavax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)hive> select key,avalue from ext_table_inhbase;Total MapReduce jobs = 1Launching Job 1 out of 1Number of reduce tasks is set to 0 since there's no reduce operatorHadoop job information for Stage-1: number of mappers: 1; number ofreducers: 019:33:55,386 Stage-1 map = 0%, reduce = 0:34:01,472 Stage-1 map = 100%, reduce = 0%, CumulativeCPU 2.73 sec19:34:02,495 Stage-1 map = 100%, reduce = 0%, CumulativeCPU 2.73 sec19:34:03,512 Stage-1 map = 100%, reduce = 100%,Cumulative CPU 2.73 secMapReduce Total cumulative CPU time: 2 seconds 730 msecEnded Job = job_201311061424_0003MapReduce Jobs Launched:Job 0: Map: 1 Cumulative CPU: 2.73 sec HDFS Read:255 HDFS Write: 39 SUCCESSTotal MapReduce CPU Time Spent: 2 seconds 730 msecOKrow1 value1row2 value2//尝试通过HiveServer去查询beeline> !connect jdbc:hive2://test-2:10000 hdfs hdfsorg.apache.hive.jdbc.HiveDriver Connecting to jdbc:hive2://test-2:10000Connected to: Hive (version 0.10.0)Driver: Hive (version 0.10.0-cdh5.4.0)Transaction isolation: TRANSACTION_REPEATABLE_READ0: jdbc:hive2://test-2:10000> show databases;+----------------+| database_name |+----------------+| default |+----------------+1 row selected (1.483 seconds)0: jdbc:hive2://test-2:10000> show tables;+--------------------+| tab_name |+--------------------+| ext_table_inhbase ||test |+--------------------+2 rows selected (0.657 seconds)0: jdbc:hive2://test-2:10000> select count(*) from ext_table_inhbase;+------+| _c0 |+------+| 3 |+------+
查询
效率
分析
成熟
不够
只不过
接口
数据
阶段
建一
存储
尝试
开发
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么是科技互联网
深圳九邦互联网科技有限公司
中关村互联网 科技集团
互联网医疗科技
嘟嘟瓜互联网科技
科技互联网创业计划书
国外互联网科技网站
互联网科技公司做什么
互联网金融监管科技
无锡溥仪互联网科技有限公司
云创客互联网科技公司
宁夏众和广鑫互联网科技有限公司
山东子淼互联网科技有限公司
互联网金融科技公司的优势
21世纪互联网科技成就
宇信科技在杭州互联网排第几
陕西云淼互联网科技公司
陕西九四连强互联网科技有限公司
青岛易易互联网科技
武汉亿视互联网科技有限公司
什么是科技互联网
互联网科技工作委员会主任
沃里互联网科技
互联网科技股午盘股票涨跌
济南和联互联网科技有限公司
北京大学互联网科技怎么样
科技互联网大厂
世界互联网领先科技成果获奖
互联网金融运营模式中的金融科技
东风日产互联网科技公司叫什么