HBase 建表设置版本

HBase 建表设置版本

当想要用HBase存储历史几个版本的数据是 (达到类似于git的效果时)可以设定版本号,版本号为几 就是存储几个版本的数据

create '表名',{NAME='列族名1',VERSIONS=给定一个版本号},{NAME='列族名2',VERSIONS=给定的版本号}

而根据版本号进行查询是:
查询几个版本的数据

scan 'test', { VERSIONS=>3}
scan 'test', { COLUMNS => ['colfam1:t1', 'colfam2:t2'],VERSIONS=>3}
### HBase 创建教程及语法 HBase 是一个分布式的、面向列的开源数据库,其操作可以通过 HBase Shell 或者通过编程接口完成。以下是 HBase 的基本语法和步骤。 #### 1. HBase Shell HBase Shell 中,创建需要指定名以及至少一个列族(Column Family)。以下是一个基本的示例: ```bash hbase(main):001:0> create 'my_table', 'cf1' ``` 这条命令将创建一个名为 `my_table` 的,并且包含一个列族 `cf1`[^2]。 如果需要设置更多的属性,例如 TTL(Time To Live)或版本控制,可以使用更复杂的语法。例如: ```bash hbase(main):002:0> create 'my_table', {NAME => 'cf1', TTL => 86400, VERSIONS => 3} ``` 这条命令将创建一个 `my_table`,其中列族 `cf1` 的数据保留时间为 1 天(86400 秒),并且最多保存 3版本的数据[^3]。 #### 2. 通过编程接口 除了使用 HBase Shell,还可以通过 Java API 创建。以下是一个简单的 Java 示例代码: ```java import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; public class HBaseTableCreator { public static void main(String[] args) throws Exception { // 配置 HBase 环境 org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create(); // 创建连接 try (Connection connection = ConnectionFactory.createConnection(config)) { Admin admin = connection.getAdmin(); // 定义名和列族 TableName tableName = TableName.valueOf("my_table"); HColumnDescriptor columnFamily = new HColumnDescriptor("cf1"); // 设置列族属性 columnFamily.setTimeToLive(86400); // 数据保留 1 天 columnFamily.setMaxVersions(3); // 最多保存 3版本 // 创建描述符 HTableDescriptor tableDescriptor = new HTableDescriptor(tableName); tableDescriptor.addFamily(columnFamily); // 创建 if (!admin.tableExists(tableName)) { admin.createTable(tableDescriptor); System.out.println("创建成功!"); } else { System.out.println("已存在!"); } } } } ``` 这段代码展示了如何通过 Java API 创建一个 HBase ,并设置了 TTL 和版本控制等属性[^2]。 #### 3. 修改结构 如果需要对已有的进行修改,例如添加新的列族或更改现有列族的属性,可以使用 `alter` 命令。例如: ```bash hbase(main):003:0> alter 'my_table', {NAME => 'cf1', TTL => 43200} ``` 这条命令将修改 `my_table` 中列族 `cf1` 的 TTL 属性为 12 小时(43200 秒)[^3]。 --- ### 注意事项 - HBase 不支持跨行事务,因此在设计结构时需要特别注意这一点[^1]。 - 如果需要 SQL 查询功能,可以结合 Phoenix 使用,但 Join 性能仍然较差,议尽量避免复杂查询[^1]。 - 创建时,列族的数量应尽可能少,因为每个列族都会对应 HDFS 上的一个目录,过多的列族会增加存储开销。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值