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(这个文件的路径) '表名' '列簇名' '列名'
本教程将详细介绍如何使用Java API来创建和删除HBase表,并针对不使用Maven的初学者提供必要的jar包支持。 首先,你需要在项目中引入HBase的客户端库。由于这里没有使用Maven,你需要手动下载并添加以下jar包到项目...
hbase表操作工具类.连接hbase数据库,根据rowkey删除单条记录,批量删除记录。获取某个字段的值,判断记录是否存在,向hbase表中插单条数据,批量插入到hbase表。 查询表,获取某个字段的值列表,hbase工具
使用 HBaseAdmin 对象删除一个表: ```java admin.disableTable("wuji"); admin.deleteTable("wuji"); ``` ### 5. 增删改查 使用 HTable 对象进行增删改查操作: ```java HTable table = new HTable...
8. **异常处理**:在使用HbaseTemplate时,需要注意处理可能出现的异常,如TableExistsException(表已存在)、TableNotFoundException(表不存在)等,确保程序的健壮性。 总之,Spring Data Hadoop的Hbase...
该文件是使用scala代码删除hbase数据的简单例子,通过简单调度执行该main方法即可。
本篇文章将详细探讨如何使用 Scala 和 Spark 的 Resilient Distributed Datasets (RDDs) 与 HBase 进行交互,包括读取、写入以及删除数据。 首先,我们需要理解 Spark RDD。RDD 是 Spark 的基本数据抽象,它是不可...
在本文中,我们将深入探讨如何使用HBase的Java API进行数据的增加、修改和删除操作。HBase是一个基于Google Bigtable设计的开源分布式数据库,它属于Apache Hadoop生态系统的一部分,适用于处理大规模数据存储。通过...
Export 和 Import 是 HBase 的内置功能,可以将 HBase 表内容输出成 HDFS 的 SequenceFiles 文件,然后将文件插入到 HBase 表中。 Snapshot 是 HBase 的快照功能,可以快速创建快照,然后将快照恢复到 HBase 表中。...
Java SpringBoot 连接 Hbase Demo 创建表 插入数据 列族 列 查询:全表、数据过滤 删除数据 删除表 Hbase 集群搭建:https://blog.csdn.net/weixin_42176639/article/details/131796472
1. **创建表**:使用HBase shell或Java API,通过`create '表名', '列族'`命令创建表,例如`create 'users', 'info'`创建名为users的表,列族为info。 2. **插入数据**:插入数据通过`put '表名', '行键', '列族:列...
(3) 向已经创建好的表添加和删除指定的列族或列;(4) 清空指定的表的所有记录数据(5) 统计表的行数。2. 现有以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:
hbase各种例子新增修改删除批量导入: public static void main(String[] args) throws IOException { Configuration conf = HBaseConfiguration.create(); HBaseHelper helper = HBaseHelper.getHelper(conf); ...
3. 表管理:创建、修改和删除HBase表,设置表的属性如Region分裂策略、列族等。 4. 查询优化:提供查询执行计划的可视化,帮助用户理解查询性能并进行优化。 5. 监控与报警:展示HBase集群的运行状态,如节点健康...
为了验证审计日志功能是否正常工作,可以执行一些基本的HBase命令,例如创建表、插入数据、删除表等操作,并检查审计日志中是否有相应的记录。 - **示例操作**: ```shell hbase(main):010:0*create'ft','c1','c2...
除了基本的配置和启动外,还可以进行更高级的操作,例如创建新的 HBase 表、删除表等。例如: - 创建表 `scores` 并添加列族 `grade`: ```shell create 'scores','grade' ``` - 删除表 `scores` 中的 `grade` ...
1. CRUD操作:创建表、删除表、插入数据、查询数据、更新数据、删除数据。 2. 扫描器(Scanner):用于批量读取数据,支持设定条件过滤。 3. 表的分区与负载均衡:通过调整Region大小和分布,实现集群负载均衡。 五...
HBase Shell提供了创建表、删除表、插入数据、查询数据等基本操作,同时也支持复杂的条件查询和扫描。通过Shell,你可以直接执行HBase的API调用,进行调试和测试。 2. **HBase REST Gateway**:REST...
假设有一个不知道是干什么表:) 表里需要存入人员和其相对应的部门信息 HBaseAdmin admin = new HBaseAdmin(configuration); List<Put> putuser = new ArrayList();