工作中需要修改已经使用表的TTL,遇到了一些问题,做下记录
首先,进入hbase shell
1.disable表是必须的
disable 'table'2.输入alter 'table',shell弹出一堆提示
Here is some help for this command: Alter column family schema; pass table name and a dictionary specifying new column family schema. Dictionaries are described on the main help command output. Dictionary must include name of column family to alter. For example, To change or add the 'f1' column family in table 't1' from defaults to instead keep a maximum of 5 cell VERSIONS, do: hbase> alter 't1', NAME => 'f1', VERSIONS => 5 To delete the 'f1' column family in table 't1', do: hbase> alter 't1', NAME => 'f1', METHOD => 'delete' or a shorter version: hbase> alter 't1', 'delete' => 'f1' You can also change table-scope attributes like MAX_FILESIZE MEMSTORE_FLUSHSIZE, READONLY, and DEFERRED_LOG_FLUSH. For example, to change the max size of a family to 128MB, do: hbase> alter 't1', METHOD => 'table_att', MAX_FILESIZE => '134217728' You can add one table coprocessor by setting a table coprocessor attribute: hbase> alter 't1', METHOD => 'table_att', 'coprocessor'=>'hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2' Since you can have multiple coprocessors configured for a table, a sequence number will be automatically appended to the attribute name to uniquely identify it. The coprocessor attribute must match the pattern below in order for the framework to understand how to load the coprocessor classes: [coprocessor jar file location] | class name | [priority] | [arguments] You can also remove a table-scope attribute: hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE' hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'coprocessor$1' There could be more than one alteration in one command: hbase> alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}3.首先按照提示中修改MAX_FILESIZE属性的方法修改:
hbase(main):017:0> alter 'test_ttl', METHOD => 'table_att',MAX_FILESIZE => '5000' Updating all regions with the new schema... 6/6 regions updated. Done. 0 row(s) in 1.1980 seconds好像好了,但是看了下HBase的Web界面上表的schema没改,悲剧了。。。
静下来仔细看了下schema:
{NAME => 'test_ttl', MAX_FILESIZE => '5000', FAMILIES => [{NAME => 'cf', MIN_VERSIONS => '0', TTL => '500'}]} |
4.修改cf的ttl属性
hbase(main):018:0> alter 'test_ttl',NAME => 'cf', TTL => '500' Updating all regions with the new schema... 6/6 regions updated. Done. 0 row(s) in 1.3620 seconds查看web,果然改了!
5.最后按照国际惯例,enable table
hbase(main):019:0> enable 'test_ttl' 0 row(s) in 2.0450 seconds