1、查看hbase表描述,看默认表默认:TTL => 'FOREVER'。
2、我们登录hbase:./hbase shell
3、使用命令修改TTL值:
alter 'table_name', NAME => 'name', TTL => 12960000(五个月) (TTL单位为秒(s),例如2592000s=30天。)
4、此时我们再查看数据,5个月之前的数据已经在表中看不到了。
5、通过TTL的方式清理历史数据,但是alter执行后并不会立刻释放磁盘空间。需要等待压缩后才会释放磁盘空间,等待时间一般为:7天。但是可以通过可手动执行major compaction 后再观察下。操作方法:登陆hbase shell 然后执行:
balance_switch false # 关闭region
major_compact 'history'
#major_compact 't1' # Compact all regions in a table
# major_compact 'r1' # Compact an entire region
# major_compact 'r1', 'c1' # Compact a single column family within a region
# major_compact 't1', 'c1' # Compact a single column family within a table
balance_switch true # 开启region
6、手动执行major后,等待压缩完成磁盘空间即可释放完成。
二、下面是./hbase shell 相关总结
1、
scan 'test',{'LIMIT' => 1} #查看表‘test’数据,只显示一行
scan 'test',{'LIMIT' => 1 ,REVERSED => TRUE} #查看表‘test’数据,只显示一行,且倒序
scan 'test',FILTER=>"PageFilter(1)" #PageFilter :基于行的分页过滤器,设置返回行数
scan 'hbase:meta',{FILTER=>"PrefixFilter('test')"} #hbase 获取分区信息
scan 'test',FILTER=>"ColumnPaginationFilter(2,1)" #显示每行第1列之后的2个键值对
scan 'test',{STARTROW=>'102',STOPROW=>'103'} #获取102/103的行数据
scan 'test',{TIMERANGE=>[1541731083994,1541731092771]} #包含等于前面时间的数据,不含等于后面时间的数据
scan 'position_history',{'LIMIT' => 3,TIMERANGE=>[1650908732216,1652234493342]} #示例
2、STARTROW
ROWKEY起始行。会先根据这个key定位到region,再向后扫描
- 语法
scan '表名', { STARTROW => '行键名'} - 示例
scan 'position_history', { STARTROW => '2019' , 'LIMIT' => 1 }
3、ValueFilter 值过滤器
- 语法:binary 等于某个值
scan '', FILTER=>"ValueFilter(=,'binary:')" - 语法 substring:包含某个值
scan '表名', FILTER=>"ValueFilter(=,'substring:列值')" - 示例
scan 'position_history', FILTER=>"ValueFilter(=, 'binary:2022')"
scan 'position_history', FILTER=>"ValueFilter(=, 'substring:2022-10-31')"
网友评论