91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase1.x中誤刪數怎么辦

發布時間:2021-12-09 10:16:59 來源:億速云 閱讀:103 作者:小新 欄目:大數據

這篇文章給大家分享的是有關HBase1.x中誤刪數怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

    以前常用的關系數據庫mysql、oracle 誤刪除后,都可通過各種方式進行數據的恢復,而HBase中如果我們誤刪除了表中的一行或者一行中的幾列數據能不能恢復呢?答案是肯定的,HBase可設置KEEP_DELETED_CELLS 為 True 的目的在于防止數據被物理刪除:

先來說下HBase的兩個屬性:KEEP_DELETED_CELLS和TTL

 1.創建表時指定列族的TTL[time to live]存活時間 10s -- 表中改列族所有數據,僅存活7秒

hbase(main):002:0> create 'ljs:testTable2',{NAME=>'columnFamily1', TTL=> 10, VERSIONS=>3}

   2..創建表時指定 KEEP_DELETED_CELLS[刪除key之后,數據是否還在內存保留,但是TTL設置之后,這里到了TTL設置的10s時間后,仍然會刪除]

   hbase(main):002:0>  create 'ljs:testTable2',{NAME=>'columnFamily1', TTL=> 10, VERSIONS=>3 , KEEP_DELETED_CELLS => true}

TTL和KEEP_DELETED_CELLS差異

        a.創建表時,可以指定TTL和KEEP_DELETED_CELLS,TTL的強制性要大于KEEP_DELETED_CELLS

        b.當指定了TTL,那么到TTL指定時間,全表數據都會被刪除,從hbase上清除

        c.當指定了KEEP_DELETED_CELLS = true[默認值], 刪除[delete]的數據仍然在hbase中,即使flush,也沒有刪除。使用原生掃描,是可以查到的

        d.當指定了KEEP_DELETED_CELLS = false,同時flush,數據就會被刪除,hbase沒有保留。原生掃描也查不到數據了

下面開始講數據誤刪恢復:

  1. 當誤刪數據后,第一時間登陸hbase shell,執行以下命令:

誤刪幾個列族數據就對幾個列族執行以下命令,這里誤刪除兩個列族colunmFamily1,columnFamily2:

alter'ljs:testTable2', { NAME => 'columnFamily1', KEEP_DELETED_CELLS => TRUE }, { NAME => 'columnFamily2', KEEP_DELETED_CELLS => TRUE }

    HBase隨著數據的寫入和合并發生清理時,不會去清理數據文件中的數據,而是寫入一個刪除標記到新文件中。當某一刻major compaction發生時,在合并文件的同時會根據刪除標記清理數據,新合并出來的數據文件不會再有舊數據。

    KEEP_DELETED_CELLS 的作用就是在major compaction發生的時候,決定要不要清理舊數據。這里需要注意一點,即使 KEEP_DELETED_CELLS 設置為True,數據仍然會因為過期而被清理(HBsae表中的TTL屬性)。這個設定無可厚非,既然過期了,誤刪不誤刪也無所謂了。

下面用實際操作演示一下:

    1.準備數據:

hbase(main):009:0> scan 'testTable2'ROW                                    COLUMN+CELL                                                                                                     row001                                column=columnFamily1:column1, timestamp=1580948919942, value=value001                                           row001                                column=columnFamily1:column2, timestamp=1580948927665, value=value002                                           row001                                column=columnFamily2:column1, timestamp=1580948939101, value=value021                                           row001                                column=columnFamily2:column2, timestamp=1580948945476, value=value022                                           row002                                column=columnFamily1:column1, timestamp=1580948964943, value=value201                                           row002                                column=columnFamily1:column2, timestamp=1580948972598, value=value202                                          2 row(s) in 0.0580 seconds

2.刪除row002的數據:

hbase(main):010:0> delete 'testTable2','row002','columnFamily1:column1'0 row(s) in 0.0640 seconds
hbase(main):011:0> delete 'testTable2','row002','columnFamily1:column2'0 row(s) in 0.0220 seconds
hbase(main):012:0> scan 'testTable2'ROW                                    COLUMN+CELL                                                                                                     row001                                column=columnFamily1:column1, timestamp=1580948919942, value=value001                                           row001                                column=columnFamily1:column2, timestamp=1580948927665, value=value002                                           row001                                column=columnFamily2:column1, timestamp=1580948939101, value=value021                                           row001                                column=columnFamily2:column2, timestamp=1580948945476, value=value022                                          1 row(s) in 0.0570 seconds

3.scan時可以設置是否開啟Raw模式,開啟Raw模式會返回包括已添加刪除標記但是未實際刪除的數據現在我們指定RAW屬性,重新scan這張表:

HBase1.x中誤刪數怎么辦

不僅能看到原來的數據,還多了一行含有DeleteColum標簽的已刪除數據。

4.下面你就可以根據自身需要重新put已刪除插入數據即可,這里就不在執行操作了。

感謝各位的閱讀!關于“HBase1.x中誤刪數怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特后旗| 托克逊县| 宣威市| 鸡东县| 宜春市| 清丰县| 濮阳市| 保靖县| 北流市| 余庆县| 霞浦县| 青海省| 安阳县| 开阳县| 双江| 辽中县| 宁陵县| 南充市| 扎鲁特旗| 炉霍县| 甘洛县| 射洪县| 乌海市| 玉屏| 北票市| 桦甸市| 翁牛特旗| 育儿| 亚东县| 乐都县| 裕民县| 喜德县| 龙门县| 新巴尔虎左旗| 夏津县| 南通市| 双辽市| 建平县| 大城县| 安阳市| 师宗县|