修改HBase表的TTL

工作中需要修改已经使用表的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'}]}

ttl是在cf的属性中的,ttl应该是cf的属性而不是table级别的属性,因此尝试修改cf属性

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

搞定



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值