hypertable使用小记,持续更新中。。。

Hypertable数据查询时的显示次序:

  1. rowkey升序显示;
  2. Cf按照表格创建时指定的次序显示;
  3. Cq按名称升序显示;
  4. value按照插入的次序倒序显示。

 

Cf索引和cq索引:
  1. cf索引:按照cfvalue进行排序,value相同的,按照rowkey进行排序。多个cf索引按照索引次序进行分组,第一个索引序号为1,后续索引序号依次类推。
  2. cq索引:按照cq名称进行排序,名称相同的,按照rowkey排序。多个cq索引按照索引次序进行分组,第一个索引序号为1,后续索引序号依次类推。Cq索引与value无关。
  3. 数据删除时,索引表不会自动更新。


HQL语句:

1.select语句

Where 子句:

  • 可按照rowcelltimestampvaluecf条件进行过滤。
  • cf为条件时,select关键字之后不能跟随“*”,只能跟随作为条件的cf或者其包含的cq
  • Value条件会进行全表扫描,其不支持关系运算符,只支持正则表达式,例如where value=”abc”将会报错
  • Rowcellcf条件都支持“=^”操作,valuetimestamp则不支持。
  • 多个条件一般可以进行AND组合查询,组合情况包括:rowcellvaluecf都能和timestamp进行AND组合;row还能和value、cf进行AND组合;Rowcf都不能和cell进行AND组合;cell可以和value进行AND组合;cf和value不能进行AND组合。
  • 多个row条件之间可以进行OR组合,但是需要用括号标记所有条件,例如:(row="" or row="")、(""<=row<"" or ""<row<="")
  • WHERE CELL =^ "foo","cf:a",该条件查找指定的row和列族中,以“a”为列名称首字符的CELL值,其中“foo”表示row值,“cf”表示列族名称。
  • 只有rowvalue条件支持正则表达式,正则表达式以””作为限定符,例如:where row regexp "http://.*"
  • Select关键字之后的cq可以使用正则表达式,正则表达式以//作为限定符,例如:select col1:/^w[^a-zA-Z]*$/select CELLS col1:/^w[^a-zA-Z]*$/,其中col1为列族名称,两种表示效果等效。
  • row=^"" and ""<=row<=""将会出现并集结果,如果想获得交集结果,可采用:""<=row<="" and row regexp "^"。

2.Delete语句
  • 可以删除rowkey对应的多个cell和单个cell,可以删除单个cell的不同版本。
  • 一次delete语句只能对一个rowkey进行操作,即where之后只能出现row=‘rowkey’的情况。
3.Insert语句
    Insert into tab values("tm","row","cf:cq","value"),可以插入一个CELL。如果多个CELL的tm、row、cf:cq相同,则会实现表面的Update操作,但实际上原CELL仍然存在,只是新增了一个CELL而已。

TTL说明:
例如一个表在创建时指定了TTL,超过TTL的CELL虽然查询不出来,但是表里面仍然存在,即不能尽快释放磁盘空间。如果该表创建了索引,超过TTL的数据仍然在索引表中存在。

临时表:
在查询的过程中,Hypertable会产生临时表,尤其是在查询结果集较大的 时候,在监控界面可以清楚的看到类似”tmp/08eb3540-8ba1-44a8-ae9c-9c778ef5814d“的记录,这就是临时表。如果查询正常结束,临时表会自动删除,但是如果查询意外中断,临时表将会永远存在。此时需要手动删除,删除方法同普通用户表,但是表名要加引号,例如:
use tmp;
drop table "08eb3540-8ba1-44a8-ae9c-9c778ef5814d";

Hypertable启动时注意事项:
Cap start后,集群会频繁的进行compactionsplitbalance等操作,所以导致监控界面中用户表可能不能及时显示。如果数据量较大,在操作过程中还会出现rs机器故障,具体表现为:监控页面中rs变红,并且rangeserver.log中会提示38060端口连接失败。此时需要手动启动故障机器的rangeserver服务即可(安装目录/bin/start-rangeserver.sh)。当然,如果数据量较大,还需要足够的耐心等待compactionsplitbalance等操作的完成。。。。。。否则即使在监控页面看到用户表,其数据可能也不完整。

手动去除一台RangeServer
/opt/hypertable/current/bin/ht_rsclient
BALANCE ALGORITHM='OFFLOAD rs1'

手动触发Major Compaction
/opt/hypertable/current/bin/ht_rsclient
/*查看所有命令的帮助*/
help 
/*查看compact命令的帮助*/
help compact  
/*compact table table_name*/   
compact table "hyt/foo"; 
/*compact ranges range_type   range_type:all|root|metadata|system|user*/
compact ranges user; 
This command schedules a major compaction for each range specified
in the command.  The TABLE version of the command will schedule
a major compaction for each range in the given table.  The RANGES
version of the command will schedule compactions for all the ranges
of the given type(s), regardless of what table they belong to.

NOTE:  Compactions scheduled by this command are spread out over time.
During each maintenance interval, which by default happens once every
60 seconds, a limited number of these compactions will get scheduled
as controlled by the following property:
  Hypertable.RangeServer.Maintenance.MoveCompactionsPerInterval
The default value for this property is 2.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值