`
亦梦亦真
  • 浏览: 229642 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论

关于删除hbase表内容

阅读更多

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之后,这些数据将会彻底消失。

 

1
0
分享到:
评论
2 楼 edmundjx 2011-12-30  
请问你那个Query query = new Query();是什么呢
1 楼 bbym010 2011-10-20  
学习了,有两个问题请教:1)请问没有真正删除之前,查询的时候,怎么保证查不到;2)你说的时间,在哪地方可以设置,到了这个时间,又是怎么做到删除的。请赐教,多谢

相关推荐

    关于hbase表结构的知识点

    hbase表结构设计,新建表,查询表语句,删除表数据,删除表的例子。

    Hbase 删除某一列

    删除Hbase中某个表的一列值 命令 java -jar deleteOneColumn.jar(这个文件的路径) '表名' '列簇名' '列名'

    java操作Hbase之实现表的创建删除源码

    本教程将详细介绍如何使用Java API来创建和删除HBase表,并针对不使用Maven的初学者提供必要的jar包支持。 首先,你需要在项目中引入HBase的客户端库。由于这里没有使用Maven,你需要手动下载并添加以下jar包到项目...

    hbase表操作工具类

    hbase表操作工具类.连接hbase数据库,根据rowkey删除单条记录,批量删除记录。获取某个字段的值,判断记录是否存在,向hbase表中插单条数据,批量插入到hbase表。 查询表,获取某个字段的值列表,hbase工具

    Java操作Hbase进行建表、删表以及对数据进行增删改查

    使用 HBaseAdmin 对象删除一个表: ```java admin.disableTable("wuji"); admin.deleteTable("wuji"); ``` ### 5. 增删改查 使用 HTable 对象进行增删改查操作: ```java HTable table = new HTable...

    HbaseTemplate 操作hbase

    8. **异常处理**:在使用HbaseTemplate时,需要注意处理可能出现的异常,如TableExistsException(表已存在)、TableNotFoundException(表不存在)等,确保程序的健壮性。 总之,Spring Data Hadoop的Hbase...

    scala删除hbase

    该文件是使用scala代码删除hbase数据的简单例子,通过简单调度执行该main方法即可。

    hbase-rdd:Spark RDD从HBase读取,写入和删除

    本篇文章将详细探讨如何使用 Scala 和 Spark 的 Resilient Distributed Datasets (RDDs) 与 HBase 进行交互,包括读取、写入以及删除数据。 首先,我们需要理解 Spark RDD。RDD 是 Spark 的基本数据抽象,它是不可...

    hbase java api 访问 增加修改删除(一)

    在本文中,我们将深入探讨如何使用HBase的Java API进行数据的增加、修改和删除操作。HBase是一个基于Google Bigtable设计的开源分布式数据库,它属于Apache Hadoop生态系统的一部分,适用于处理大规模数据存储。通过...

    hbase和hadoop数据块损坏处理

    Export 和 Import 是 HBase 的内置功能,可以将 HBase 表内容输出成 HDFS 的 SequenceFiles 文件,然后将文件插入到 HBase 表中。 Snapshot 是 HBase 的快照功能,可以快速创建快照,然后将快照恢复到 HBase 表中。...

    Java SpringBoot 连接 Hbase Demo

    Java SpringBoot 连接 Hbase Demo 创建表 插入数据 列族 列 查询:全表、数据过滤 删除数据 删除表 Hbase 集群搭建:https://blog.csdn.net/weixin_42176639/article/details/131796472

    Hbase 安装与基本使用

    1. **创建表**:使用HBase shell或Java API,通过`create '表名', '列族'`命令创建表,例如`create 'users', 'info'`创建名为users的表,列族为info。 2. **插入数据**:插入数据通过`put '表名', '行键', '列族:列...

    Hbase应用开发实验报告及代码

    (3) 向已经创建好的表添加和删除指定的列族或列;(4) 清空指定的表的所有记录数据(5) 统计表的行数。2. 现有以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:

    hbase各种例子新增修改删除批量导入

    hbase各种例子新增修改删除批量导入: public static void main(String[] args) throws IOException { Configuration conf = HBaseConfiguration.create(); HBaseHelper helper = HBaseHelper.getHelper(conf); ...

    Hbase可视化客户端.rar

    3. 表管理:创建、修改和删除HBase表,设置表的属性如Region分裂策略、列族等。 4. 查询优化:提供查询执行计划的可视化,帮助用户理解查询性能并进行优化。 5. 监控与报警:展示HBase集群的运行状态,如节点健康...

    HBase开启审计日志

    为了验证审计日志功能是否正常工作,可以执行一些基本的HBase命令,例如创建表、插入数据、删除表等操作,并检查审计日志中是否有相应的记录。 - **示例操作**: ```shell hbase(main):010:0*create'ft','c1','c2...

    hbase配置内置的zookeeper

    除了基本的配置和启动外,还可以进行更高级的操作,例如创建新的 HBase 表、删除表等。例如: - 创建表 `scores` 并添加列族 `grade`: ```shell create 'scores','grade' ``` - 删除表 `scores` 中的 `grade` ...

    HBase官方文档中文版-HBase手册中文版

    1. CRUD操作:创建表、删除表、插入数据、查询数据、更新数据、删除数据。 2. 扫描器(Scanner):用于批量读取数据,支持设定条件过滤。 3. 表的分区与负载均衡:通过调整Region大小和分布,实现集群负载均衡。 五...

    hbase用于查询客户端工具

    HBase Shell提供了创建表、删除表、插入数据、查询数据等基本操作,同时也支持复杂的条件查询和扫描。通过Shell,你可以直接执行HBase的API调用,进行调试和测试。 2. **HBase REST Gateway**:REST...

    hbase-0.90.2中创建表、插入数据,更新数据,删除数据

    假设有一个不知道是干什么表:) 表里需要存入人员和其相对应的部门信息 HBaseAdmin admin = new HBaseAdmin(configuration); List&lt;Put&gt; putuser = new ArrayList();

Global site tag (gtag.js) - Google Analytics