FilterLanguage document attached to the HBASE-4176 JIRA
b.Using the entire package name of the filter.
还有一个CACHE_BLOCKS修饰词,开关scan的缓存的,默认是开启的(CACHE_BLOCKS=>true),可以选择关闭(CACHE_BLOCKS=>false)。
5) 删除指定数据
复制代码 代码如下:
delete‘scores','Jim','grade'
delete‘scores','Jim'
删除数据命令也没太多变化,只有一个:
hbase>delete ‘t1′, ‘r1′, ‘c1′, ts1
另外有一个deleteall命令,可以进行整行的范围的删除操作,慎用!
如果需要进行全表删除操作,就使用truncate命令,其实没有直接的全表删除命令,这个命令也是disable,drop,create三个命令组合出来的。
6) 修改表结构
复制代码 代码如下:
disable‘scores'
alter ‘scores',NAME=>'info'
enable‘scores'
alter命令使用如下(如果无法成功的版本,需要先通用表disable):
a、改变或添加一个列族:
hbase>alter ‘t1′, NAME => ‘f1′, VERSIONS => 5
b、删除一个列族:
复制代码 代码如下:
hbase>alter ‘t1′, NAME => ‘f1′, METHOD => ‘delete'
hbase>alter ‘t1′, ‘delete' => ‘f1′
c、也可以修改表属性如MAX_FILESIZE
MEMSTORE_FLUSHSIZE,READONLY,和 DEFERRED_LOG_FLUSH:
hbase>alter ‘t1′, METHOD => ‘table_att', MAX_FILESIZE => '134217728′
d、可以添加一个表协同处理器
hbase>alter ‘t1′, METHOD => ‘table_att', ‘coprocessor'=> ‘hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2′
一个表上可以配置多个协同处理器,一个序列会自动增长进行标识。加载协同处理器(可以说是过滤程序)需要符合以下规则:
[coprocessorjar file location] | class name | [priority] | [arguments]
e、移除coprocessor如下:
hbase>alter ‘t1′, METHOD => ‘table_att_unset', NAME => ‘MAX_FILESIZE'
hbase>alter ‘t1′, METHOD => ‘table_att_unset', NAME => ‘coprocessor$1′
f、可以一次执行多个alter命令:
hbase>alter ‘t1′, {NAME => ‘f1′}, {NAME => ‘f2′, METHOD => ‘delete'}
7) 统计行数:
复制代码 代码如下:
hbase>count ‘t1′
hbase>count ‘t1′, INTERVAL => 100000
hbase>count ‘t1′, CACHE => 1000
hbase>count ‘t1′, INTERVAL => 10, CACHE => 1000
count一般会比较耗时,使用mapreduce进行统计,统计结果会缓存,默认是10行。统计间隔默认的是1000行(INTERVAL)。
8) disable 和 enable 操作
很多操作需要先暂停表的可用性,比如上边说的alter操作,删除表也需要这个操作。disable_all和enable_all能够操作更多的表。
9) 表的删除
先停止表的可使用性,然后执行删除命令。
drop ‘t1′
以上是一些常用命令详解,具体的所有hbase的shell命令如下,分了几个命令群,看英文是可以看出大概用处的,详细的用法使用help “cmd” 进行了解。
复制代码 代码如下:
COMMANDGROUPS:
Groupname: general
Commands:status, version
Groupname: ddl
Commands:alter, alter_async, alter_status, create, describe, disable, disable_all, drop,drop_all,
enable,enable_all, exists, is_disabled, is_enabled, list, show_filters
Groupname: dml
Commands:count, delete, deleteall, get, get_counter, incr, put, scan, truncate
Groupname: tools
Commands:assign, balance_switch, balancer, close_region, compact, flush, hlog_roll,major_compact,
move,split, unassign, zk_dump
Groupname: replication
Commands:add_peer, disable_peer, enable_peer, list_peers, remove_peer,start_replication,
stop_replication
Groupname: security
Commands:grant, revoke, user_permission
10) hbase shell脚本
既然是shell命令,当然也可以把所有的hbase shell命令写入到一个文件内,想linux shell脚本程序那样去顺序的执行所有命令。如同写linux shell,把所有hbase shell命令书写在一个文件内,然后执行如下命令即可:
复制代码 代码如下:
$hbase shell test.hbaseshell
六、JAVA操作HBASE方面
1) 连接原理和配置
HBase Master是服务器负责管理所有的HRegion服务器,HBase Master并不存储HBase服务器的任何数据,HBase逻辑上的表可能会划分为多个HRegion,然后存储在HRegion Server群中,HBase Master Server中存储的是从数据到HRegion Server的映射。
一台机器只能运行一个HRegion服务器,数据的操作会记录在Hlog中,在读取数据时候,HRegion会先访问Hmemcache缓存,如果 缓存中没有数据才回到Hstore中上找,没一个列都会有一个Hstore集合,每个Hstore集合包含了很多具体的HstoreFile文件,这些文 件是B树结构的,方便快速读取。
再看下HBase数据物理视图如下:
| Row Key |
Timestamp |
Column Family |
|
| URI |
Parser |
||
| r1 |
t3 |
url=http: | |