hbase这个功能很是郁闷,使用它给定的API删除某个表的一些内容
public class testDelete extends TestCase {
public static void main(String[] args){
testDelete test = new testDelete();
try {
test.delete();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void delete() throws Exception {
ResultScanner rs = this.QueryMailByCaseNum("1303002");
if (rs != null) {
DeleteData delete = new DeleteData();
delete.delete("mail_tab", rs);
}
}
public ResultScanner QueryMailByCaseNum(String casenum) throws Exception {
Query _query = new Query();
// logger.info("query emails:"+casenum);
List<EMail> list = new ArrayList<EMail>();
ResultScanner rs = null;
List<Filter> filters = new ArrayList<Filter>();
filters.add(new PrefixFilter(Bytes.toBytes(casenum)));
Filter filter = new FilterList(FilterList.Operator.MUST_PASS_ALL,
filters);
// 设置返回列
List<String> familys = new ArrayList<String>();
familys.add("property");
rs = _query.getByFilter("mail_tab", filter, familys);
if (rs == null) {
return null;
}
return rs;
/**
* 按表和结果删除记录
* @param tablename
* @param scanner
* @return
* @throws Exception
*/
public boolean delete(String tablename,ResultScanner scanner) throws Exception
{
boolean r = true;
HTable table = new HTable(HBaseConnection.connection,tablename);
Iterator<Result> it = scanner.iterator();
try
{
while (it.hasNext()) {
Result result = it.next();
Delete delete = new Delete(result.getRow());
table.delete(delete);
table.flushCommits();
}
}
catch(Exception ex)
{
r = false;
_error = ex.getMessage();
}
finally
{
table.close();
}
return r;
} }
执行了,也成功了,可是,在查看hbase下的.META.表时,却发现有一个新的historian 文件,里面有记录着被删除的一些数据信息,而查看HDFS上的数据,也发现这些数据没有删除。但是在使用hbase查询该rowkey时,却查询不到。通过查看API,原来,delete操作只是删除了hbase对这些数据的记录,并没有删除在hdfs上的文件。对于如何彻底删除,我正在研究,也请大家有什么资料可以给我分享一下,不胜感激.
问题解决了,
hbase的删除操作是不会立即删除实际数据的,而是在compaction发生的时候才会实际删除数据,在执行get或scan操作的时候,hbase实际上是将数据取出后看是否该row存在删除操作,合并了这些操作后,被你删除的数据,在HDFS上虽然还存在,但实际上你是无法get到的。在compaction之后,这些数据将会彻底消失。
分享到:
相关推荐
hbase表结构设计,新建表,查询表语句,删除表数据,删除表的例子。
删除Hbase中某个表的一列值 命令 java -jar deleteOneColumn.jar(这个文件的路径) '表名' '列簇名' '列名'
hbase表操作工具类.连接hbase数据库,根据rowkey删除单条记录,批量删除记录。获取某个字段的值,判断记录是否存在,向hbase表中插单条数据,批量插入到hbase表。 查询表,获取某个字段的值列表,hbase工具
java操作Hbase之实现表的创建删除,源代码,面向不使用maven的初学者,因此附带全部所需jar包。
该文件是使用scala代码删除hbase数据的简单例子,通过简单调度执行该main方法即可。
课后作业 1. 请用java集合的代码描述HBase的表结构 ...7. 如何删除HBase中的表 8. 简述HBase的表操作对象 9. HBase中为了提升并行插入数据的速度,如何进行表的预先切分 10. 如何添加backup的master
Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
hbase各种例子新增修改删除批量导入: public static void main(String[] args) throws IOException { Configuration conf = HBaseConfiguration.create(); HBaseHelper helper = HBaseHelper.getHelper(conf); ...
(3) 向已经创建好的表添加和删除指定的列族或列;(4) 清空指定的表的所有记录数据(5) 统计表的行数。2. 现有以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:
假设有一个不知道是干什么表:) 表里需要存入人员和其相对应的部门信息 HBaseAdmin admin = new HBaseAdmin(configuration); List<Put> putuser = new ArrayList();
hbase-rdd:Spark RDD从HBase读取,写入和删除
hbase java api 访问 增加修改删除(一) 详情请看:http://blog.csdn.net/wild46cat/article/details/53306621
Hbase JAVA编程开发实验报告以及代码,1 按照“Hbase应用开发实验1.pdf”中给出的说明,完成相关相关实验及JAVA程序的编写、调试和运行,提交JAVA源程序(AccessObject.java, HBaseTester.java, User.java)及运行...
HBase表管理:表创建、预分区建表(内置三种预分区方案)、表删除、表信息更改、表清空 列簇管理:列簇新增、删除、属性修改 标签管理:HBase表的标签管理 数据管理:HBase表数据的查询、新增、删除。 多集群...
hadoop-2.52-hbase-0.14-hadoop2 ha高可用安装,hbase动态添加删除节点,hbase集群正常状态及启动,hbase 问题汇总
springboot搭建的hbase可视化界面 支持hbase的建表与删除 支持根据rowkey查询数据
高清英文PDF版。 如果你正在寻找一种具备可伸缩性的存储解决方案来适应几乎没有穷尽的数据的话,这本书将可以向你表明apache ... ■了解如何调节集群、设计模式、拷贝表、导入批量数据、删除节点以及其他更多的任务
使用JavaAPI实现HBase的ddl(创建表、删除表、修改表(添加列族等))、dml(添加数据、删除数据)、dql(查询数据(get、scan))等操作 除此之外还包含一些其他操作:命名空间的应用、快照的应用等 对应(《HBase...
当删除时,就是向表里面插入一行数据,并加上删除标记。update时,就向表里插入一条数据,根据时间戳来区别。 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询...
Java SpringBoot 连接 Hbase Demo 创建表 插入数据 列族 列 查询:全表、数据过滤 删除数据 删除表 Hbase 集群搭建:https://blog.csdn.net/weixin_42176639/article/details/131796472