星环hyperbase和开源hbase的那些事
hyperbase官方简介:
Transwarp Hyperbase实时数据库是建立在Apache HBase和Elasticsearch基础之上,融合了多种索引技术、分布式事务处理、全文实时搜索、图形数据库在内的实时NoSQL数据库。
个人总结:
hyperbase是基于开源hbase+hive的体系结构,融合了全局索引、全文索引,加入了自己的序列化反序列化编码格式,集成在星环的一站式大数据平台TDH上,对sql的支持度更加友好,底层依然是依托于开源的hbase,目前最新的星环大数据平台版本中使用的是开源的hbase1.3.1版本
hyperbase支持两种表结构:
hyperbase表(对应开源,建表语法和开源类似)
基于开源Hive HBaseStorageHandler研发,本身设计比较简单,Hyperbase底层不存储表的schema信息,数据的序列化反序列化依赖于上层Hive。这造成了很多功能和性能上的问题,例如:null值与空字符串的区分,SQL执行计划的优化等。因此在与Inceptor配合使用的情况下不推荐使用Hyperbase表。只有一种场景比较适合:在Hyperbase中已存在一张表,需要通过Inceptor的外表功能进行对接。这样保证了Inceptor对原生Hyperbase表的访问功能。
创建内表
create table hbase_inner_table( key1 string, bi bigint, dc decimal(10,2), ch varchar(10), ts timestamp, en string )STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘;
创建外表
CREATE EXTERNAL TABLE hbase_external_table( key1 string, ex1 double, ex3 date, ex5 string ) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘ WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,f:q1,f:q4,f:q5") TBLPROPERTIES ("hbase.table.name"="test.hbase_inner_table");
hyperdrive表(星环自研)
为了解决Hyperbase表的一些设计缺陷,星环科技自主研发了Hyperdrive表,去除了开源Hive HBaseStorageHandler的设计,并增加了新的功能,使其能更高效地通过Inceptor访问存储在Hyperbase中的数据。
在底层Hyperbase中加入表的schema信息,数据存储压缩率更高,序列化/反序列化更高效。数据类型支持BOOLEAN、TINYINT、SMALLINT、INTEGER、BIGINT、DATE、TIMESTAMP、DECIMAL、FLOAT、DOUBLE、STRING、VARCHAR、STRUCT、BINARY等多种类型。
对接Inceptor通用的存储访问层Stargate,可以支持完整的Filter转换下推、Global Lookup Join等特性,显著提升SQL性能。
{elasticsearch}语法对接,不需要再使用以前的那套contains语句了,直接使用现有的条件即可。=、<、>、in、like、between and、not in、!=等对应的语句即可。
可以通过指定使用索引的方式使用对应的索引(i.e. hint)
支持 NULL值占位符,可正确表达NULL值
只支持建内表
CREATE TABLE bank_info( acc_num STRING, name STRING, password STRING, email STRING, cellphone STRING, balance DOUBLE )STORED AS HYPERDRIVE;