设为首页 加入收藏

TOP

修改HBase表的TTL
2018-11-28 17:30:21 】 浏览:30
Tags:修改 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

搞定



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hbase建表操作--shell语句 下一篇每天一点进步:hbase预分区和压缩

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目