hbase删除有三种标记

  • Delete标记: 删除特定列列指定的版本
  • DeleteFamily标记: 删除特定列族所有列
  • DeleteColumn标记: 删除特定列的所有版本

指定rowkey: 使用DeleteFamily标记

  • 不加时间戳表示删除指定rowkey的所有数据
  • 加时间戳表示删除指定rowkey时间戳版本小于或等于指定时间戳的所有数据

指定rowkey+columnFamily: 使用DeleteFamily标记

  • 不加时间戳表示删除指定列族的所有数据
  • 加了时间戳就表示删除指定列族时间戳版本小于或等于指定时间戳的所有数据

指定rowkey+columnFamily+column(addColumns): 使用DeleteColumn标记

  • 不加时间戳表示删除指定列所有版本的数据
  • 加时间戳表示删除指定列时间戳版本小于或等于指定时间戳的所有数据

指定rowkey+columnFamily+column(addColumn): 使用Delete标记 (只删除单个版本数据,生产环境尽量别用)

  • 不加时间戳表示删除指定列最新版本的数据

  • 加时间戳表示删除指定列指定时间戳版本的数据

  • 不推荐的原因是:操作不同(如flush前后操作产生的结果会不一样)结果可能不同
    在flush前如果有多个版本的数据,此时进行addColumn(不加时间戳)操作,会将最新版本的数据删除,然后老版本的数据会出现

    在flush后进行addColumn(不加时间戳)操作,会将最新版本的数据删除,而此时flush已将老版本的数据进行了删除,所有此时老版本的数据就不会出现了