Delete类的接口有两个方法:deleteColumns和deleteColumn,它们的区别从method注释里可以看到:
deleteColumns:Delete all versions of the specified column with a timestamp less than or equal to the specified timestamp.
deleteColumn:Delete the latest version of the specified column.
实现上,前者只是传给server一个时间标签,表示这行数据的最后删除版本,因此仅相当于一个普通的put
但是后者必须定位到这行version,因此需要先get到这行数据,再做处理
实际使用中有个陷阱,细心的人会发现如果对某行数据的一个version进行了删除,在compact之前即使再将同一个version的数据写进去,也是读不到的。原因是hbase定位数据是依靠rowkey/timestamp/family/qulifier。假如这四者都一样,那么多次put/delete是无法知道先后顺序的。因此取哪个值取决于KeyValue.Type的值,Delete是在Put之前。所以扫描到Delete就不会再去读Put了。
要想恢复对这个timestamp标签的读写,必须做一次compact,最好是major_compact,确保这一行数据己经从物理上删除了,此时就可以再读取值了。
分享到:
相关推荐
删除Hbase中某个表的一列值 命令 java -jar deleteOneColumn.jar(这个文件的路径) '表名' '列簇名' '列名'
在本文中,我们将深入探讨如何使用Scala API操作HBase数据库。HBase是一个分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供实时访问大量数据的能力。Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)...
HBase是Apache Hadoop生态系统中的一个分布式、版本化、列族式存储系统,设计用于处理大规模数据集。这个“hbase-2.4.17-bin”安装包提供了HBase的最新稳定版本2.4.17,适用于大数据处理和分析场景。下面将详细介绍...
HBase是Apache Hadoop生态系统中的一个分布式、高性能、版本化、列族式数据库,它提供了对大规模数据集的实时访问。HBase设计用于处理PB级的数据,并且可以在数千台服务器上扩展。`hbase-1.2.0-cdh5.14.2.tar.gz` 是...
在Shell中,创建表如`create 'table_name', 'column_family'`,插入数据则使用`put`命令,更新可通过`put`命令覆盖原有数据,删除数据可以是单行或整列的`delete`命令。在Java代码中,这些操作分别对应`Table`接口的...
2. **表管理**:创建、删除和管理HBase表,包括定义列族(Column Family)和列限定符(Column Qualifier)。 3. **行键(Row Key)设计**:HBase数据以行键排序,因此设计合适的行键至关重要,以便快速查询和定位...
4. **列族和列**:在HBase中,数据被组织在列族(Column Family)内,列族是逻辑上的分组,每个列族可以包含任意数量的列(Column Qualifier)。在Java代码中,我们通过`ColumnFamilyDescriptor`定义列族,并在`...
首先需要创建一个HTable对象,然后使用Delete对象将数据从HBase中删除。 ```java public static void delete(String tablename, String row) throws IOException { HTable table = new HTable(cfg, tablename); ...
本文将详细介绍HBase Shell 中的一些常用命令。 #### 二、当前用户 - **命令**: `whoami` - **功能**: 显示当前登录用户的用户名。 - **示例**: ```shell hbase(main):001:0> whoami "admin" ``` #### 三、...
在HBase中,数据被组织成表格形式,由行键(Row Key)、列族(Column Family)、列(Qualifier)和时间戳(Timestamp)组成。这个压缩包文件“findhbase”可能是提供了一系列HBase操作的示例或工具,帮助用户了解...
* Column:HBase中的每个列都由Column Family(列族)和Column Qualifier(列限定符)进行限定,例如info:name,info:age。 * Cell:由{rowkey, column Family:column Qualifier, time Stamp}唯一确定的单元。...
命名空间在HBase中是用来分隔不同表的,可以将不同的应用数据隔离到不同的命名空间中,从而避免命名冲突。 7. 版本(Versions) HBase支持同*单元格存储多个版本的数据。每个版本的数据都带有时间戳。这样,用户...
HBase是Apache Hadoop生态系统中的一个分布式、列族式的NoSQL数据库,主要设计用来处理海量数据存储和实时查询。它的核心特性包括强一致性、高可扩展性和基于行键的存储模型。HBase API是开发者与HBase进行交互的...
1. **列族(Column Family)**:HBase的核心组织单元,类似于传统数据库中的表。列族由一组具有相同前缀的列组成,列族在创建表时定义,之后可以动态添加列。 2. **行键(Row Key)**:HBase中的数据是通过行键来...
新建一个 Java 项目,然后添加相关的 jar 包,包括 hadoop-core-0.20.204.0.jar、hbase-0.90.4.jar、hbase-0.90.4-tests.jar 以及 Hbase 资源包中 lib 目录下的所有 jar 包。 ### 2. 主要程序 下面是一个 Java ...
**创建(Create)**: 在HBase中,创建表需要指定列族(Column Family)。以下是一个创建表的示例: ```java import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor;...
3. **添加和删除列族或列**:使用`create 'tableName', 'columnFamily'`来创建列族,`alter 'tableName', {NAME => 'columnFamily', METHOD => 'delete'}`删除列族。 4. **清空表的所有记录数据**:`disable '...
在HBase中,HBase Shell是用于管理与操作HBase数据库的一个交互式命令行工具。以下是一些HBase Shell的基本操作命令的详细说明: 1. **创建表** (`create`): 使用`create`命令创建一个新的HBase表。例如: ``` ...
在Java开发中,HBase是一种基于Google Bigtable设计的开源分布式数据库,主要用于处理大规模数据存储。HBase提供了高效的随机读写能力,是Apache Hadoop生态系统的一部分。为了在Java环境中与HBase进行交互,我们...