星环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;