一、起因:

  Hbase是一个列式存储,nosql类型的数据库,类似mongodb。

  目前似乎没有提供批量删除的方法,只有一个单行删除的命令:deleteall 'tablename', rowkey

二、删除方法:

  方法一:通过写 shell 脚本,从 hbase shell 查出需要删除的 rowkey ,拼成删除命令(deleteall 'tablename', rowkey),写到文本 del_temp.txt ;然后执行 hbase shell del_temp.txt

  方法二:通过建映射表,比如在 hive 建一个映射表,然后写 hql 查出需要删除的 rowkey ,拼成删除命令(deleteall 'tablename', rowkey),写到文本 del_temp.txt ;然后执行 hbase shell del_temp.txt

  方法三:通过 java 代码,调用 hbase 的单行删除方法,写个循环删除

  方法四:通过建映射表,比如在 hive 建一个映射表,将 需要保留的数据 通过 hql 查询出来,备份到 hive 的一张临时表 ;然后 在hbase shell 里面 执行 truncate 'tablename' ,清空 hbase 的数据; 最后 在将数据 从 hive 的备份表 读出来,插入 映射表,写回 hbase;

  总结:

  前面3种方法,本质上都是在 hbase 中逐行删除;而第4种方法,是利用hive的map reduce倒数据。对于不熟悉 hbase 和 java 语法的开发人员而言,使用24方法,是灵活性最好的。

三、代码:

  假设hbase有一张表,表名:test_turboway,列族:cf,以第二种删除方法为例:

  1、hive 建映射表:

CREATE EXTERNAL TABLE edw.test_turboway_hbase(`keyid` string COMMENT 'from deserializer',`title` string COMMENT 'from deserializer',`bizdate` string COMMENT 'from deserializer',`loginid` string COMMENT 'from deserializer')
ROW FORMAT SERDE'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping'=':key,cf:title,cf:bizdate,cf:loginid','serialization.format'='1')
TBLPROPERTIES ('COLUMN_STATS_ACCURATE'='false','hbase.table.name'='test_turboway','numFiles'='0','numRows'='-1','rawDataSize'='-1','totalSize'='0','transient_lastDdlTime'='1543297130')

  2、记录hive查询要删除的数据,拼成命令:

hive -e "select concat('deleteall \'test_turboway\',\'',keyid,'\'') from edw.test_turboway_hbase where loginid = '20181122'" > del_temp.txt && echo 'exit' >> del_temp.txt

  3、hbase shell 执行删除命令

hbase shell del_temp.txt > del.log

转载于:https://www.cnblogs.com/TurboWay/p/10193998.html

【大数据】Hbase如何批量删除指定数据相关推荐

  1. 【十】JDBC:使用 jmeter 批量在数据库创建 1 万多条数据;批量删除重复数据

    目录 一.批量创建1万多条数据 二.批量删除重复数据 一.批量创建1万多条数据 数据库车辆信息表中准备10000多台车的数据: (1)创建线程组,循环1次: (2)连接数据池: (3)添加循环控制器, ...

  2. Mysql批量删除大量数据

    一.Mysql批量删除大量数据 方案1 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE ...

  3. Excel怎么删除指定数据单元格

    今天小编跟大家分享一下Excel怎么删除指定数据单元格 1.如下图我们想要批量删除李松单元格 2.首先我们选择值日人员数据单元格区域 3.然后我们点击下图选项(Excel工具箱,百度即可了解详细下载安 ...

  4. mysql批量删除5000条数据_mysql批量删除大量数据

    mysql批量删除大量数据 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM s ...

  5. layui框架数据表格的批量删除

    layui框架数据表格的批量删除操作 此文献为layui框架的数据表格的批量删除,批量删除顾名思义就是把大量的数据进行删除操作 由于有点项目数据繁多,如果在要删除的时候一个一个的删除的话,就会很麻烦. ...

  6. MySQL 删除数据 批量删除(大量)数据

    在删除数据的时候根据不同的场景使用不同的方法,比如说删除表中部分数据.删除表的结构.删除所有记录并重置自增ID.批量删除大量数据等,可以使用delete.truncate.drop等语句. 一.方法分 ...

  7. C# List集合查找删除指定数据

    C# List集合查找删除指定数据 文章目录 1.实体类 2.操作第一个负荷条件数据 3.操作所有符合条件数据 4.优质源码 文章目录 1.实体类 public class FaultLevelMod ...

  8. mysql中如何大量删除数据_mysql批量删除大量数据的方法

    mysql批量删除大量数据 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM s ...

  9. js数组删除指定数据方法

    js数组删除指定数据方法 第一种:如果数据是一个一个添加进入数组中的 可以用pop来进行删除最后一个(可以用在upload上传判断是否符合等) let arrList = []; let arr = ...

  10. (WPS)Excel表格中批量删除指定字符

    (WPS)Excel表格中批量删除指定字符 打开excel表格,选中需要删除的指定行或列的数据,键盘选择快捷键ctrl+H, ![比如要删除的字符是 ' ' 鼠标点击"全部替换", ...

最新文章

  1. 快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
  2. Flutter开发之认识Flutter(二)
  3. Win8.1 “运行”在Ipad Mini上
  4. 用ruby的net/ssh链接远程的服务器
  5. Go Web学习(2)——实现中间件(middleware)
  6. [Mac技巧]Mac下显示隐藏文件
  7. android子视图无菜单,Android 菜单详解
  8. wamp编写html页面空白,Win10安装wampserver后打开localhost出现空白怎么办
  9. 文件包含——php伪协议(五)
  10. error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif”
  11. Set和Map集合的比较
  12. c语言根据变量作用域不同分为,C语言中不同变量的访问方式
  13. (一)java版spring cloud+spring boot+redis多租户社交电子商务平台-简介
  14. java 运行scala_使用java命令运行scala代码
  15. 整除光棍 (20 分)
  16. Raspberry Pi车牌识别系统
  17. java jvm dump文件_各种获取JVM DUMP的方法
  18. 计算机网络是几级学科,教育部更新学科目录 “网络空间安全”增设为一级学科...
  19. cdr圆形渐变填充怎么设置_CDR渐变填充实例教程
  20. 数据库服务器,sql

热门文章

  1. java获取不到ipv6的网卡
  2. 职场奇袭!3分钟完成一天工作
  3. 外籍专家在中关村图书大厦解密软件项目
  4. 征服RIA:函数式编程的原理
  5. 8.16 记忆增强神经网络:MANN、神经网络图灵机
  6. pytorch nonzero_[深度学习框架]PyTorch常用代码段
  7. Android Framework 全面分析 BootAnimation
  8. 谦虚:让你备受人们的欢迎 — 《别输在不会表达上》
  9. Kafka-集群部署
  10. Centos下SVN环境部署记录