讀者來信 | 設定HBase TTL必須先disable表嗎?(已解決)
阿新 • • 發佈:2020-04-07
> 今日有朋友加好友與我探討一些問題,我覺得這些問題倒挺有價值的;於是就想在本公眾號開設一個問答專欄,方便技術交流與分享,專欄名就定為:《讀者來信》。如遇到本人能力有限難以解決的問題,該貼將會被轉發至我的資源圈尋求大佬們出手幫助,並附上提問者微信二維碼。也歡迎大家在留言區積極探討解決方案~
# 來信人:黃*偉
## 小猿提問
> 如果我用Spark處理檔案寫進HBase,檔案按日期每天增量下發,如果只想在HBase中保留最近90天的檔案資料,有什麼好的方法嗎?TTL會有禁用表操作,後端查詢就會報錯。除了TTL,還有別的解決方案嗎?
## 小猿分析
> 該問題主要的癥結點在於:建表之初,沒有及時給列族設定TTL,入資料之後想到可以設定表的TTL屬性來保證資料時效性但又不想禁用表。怎麼辦呢?
## 小猿解答
> 這裡,小猿給出兩條解決方案:
**方案一:**
> 其實在稍微高一點的HBase版本,設定表TTL屬性已經可以線上進行,不需要disable表了。如果不確定,可以先建一個測試表線上設定一下TTL試一試。如果支援,那可以選擇在低峰期通過HBase Shell手動修改列族的時效性,一勞永逸。
```
hbase(main):030:0> create 'test','f1'
0 row(s) in 1.2990 seconds
=> Hbase::Table - test
hbase(main):031:0> desc 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS
=> '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0480 seconds
hbase(main):032:0> alter 'test',{NAME => 'f1',TTL => '86400'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9870 seconds
```
單位:秒(s)
**方案二:**
> 如果方案1行不通,可以嘗試通過API的方式,在插入資料時實時設定單條資料TTL。只不過歷史資料就要手動刪除了。
```
Put put = new Put(Bytes.toBytes("row1"));
put.setTTL(86400L);
```
單位:秒(s)
## 知識點補充
> 如果想重置TTL為'FOREVER'怎麼做?
答:HBase TTL 最大值為INT最大值 2147483647,只需將TTL設為該整數即可。
```
hbase(main):033:0> alter 'test',{NAME => 'f1',TTL => '2147483647'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9170 seconds
hbase(main):034:0> desc 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS
=> '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0140 seconds
```
**如果您有更好的答案,歡迎留言區留言哦~**
![掃描二維碼關注博主公眾號](https://img2020.cnblogs.com/other/1001353/202004/1001353-20200406214313789-659140131.png)
> 轉載請註明出處!歡迎關注本人微信公眾號【HBase工作