• Hbase批量删除数据


    一、TTL机制

    HBase的TTL(Time To Live)是一种用于指定数据存活时间的机制。它允许用户为HBase中的数据设置一个固定的生存时间,在达到指定的时间后,HBase会自动删除这些数据。
    具体操作如下:
    三步走,先禁用,再删除,后创建
    disable ‘dbdata:tablename’
    drop ‘dbdata:tablename’
    create ‘dbdata:tablename’,{NAME=>‘pi’,COMPRESSION=>‘SNAPPY’,NAME => ‘DATE’,TTL=>‘60’};

    TTL的原理如下:

    1. 当用户在HBase中插入一条数据时,可以为该数据设置一个TTL值。TTL值是一个整数,表示数据的存活时间,单位为秒。
    2. HBase会将数据的存储时间戳与当前时间进行比较。如果数据的存储时间戳加上TTL值小于当前时间,则说明数据已经过期,可以被删除。
    3. HBase会定期执行一次过期数据的清理操作。这个操作可以通过配置HBase的RegionServer来定期执行,也可以手动触发。
    4. 在执行过期数据清理操作时,HBase会扫描表中的数据,并根据每条数据的存储时间戳和TTL值判断数据是否过期。如果数据过期,则会将其删除。
      通过使用TTL,HBase可以自动管理数据的生命周期,避免数据堆积过多导致性能下降。同时,TTL还可以用于数据的缓存和数据的自动清理,提高系统的效率和可用性。

    二、通过shell脚本或映射表

    1、shell脚本中查出需要删除的rowkey,脚本拼接出删除命令(deleteall ‘tablename’, rowkey)
    2、通过hive的映射表查出需要删除的rowkey,拼成删除命令(deleteall ‘tablename’, rowkey)
    3、以上两种都将删除命令输出至一个文件,如data_del.txt,然后执行 hbase shell data_del.txt

    三、通过java的API

    public static void deleteMultiRow(String tableName, String... rows) throws IOException{
    HTable hTable = new HTable(conf, tableName);
    List<Delete> deleteList = new ArrayList<Delete>();
    for(String row : rows){
    Delete delete = new Delete(Bytes.toBytes(row));
    deleteList.add(delete);
    }
    hTable.delete(deleteList);
    hTable.close();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    STM32中I2C通信的完整C语言代码范例
    leetcode-253.会议室II
    Eclipse创建Servlet项目-7
    AI全流程开发难题破解之钥
    企业为什么做数字化转型?
    iOS适配Unity-2019
    瑞吉外卖之 redis优化缓存
    三星为其基于 RISC-V的 Tizen平台移植.NET
    meson和pkg-config
    【贝叶斯分类2】朴素贝叶斯分类器
  • 原文地址:https://blog.csdn.net/levis___/article/details/132854910