tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

数据库模式设计

PDF
聚焦模式
字号
最后更新时间: 2026-02-10 10:59:29

创建表

表是数据存储的基本单位。创建表时需要指定表名、列族以及行键。
通过 HBase API 语句创建表。
package com.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;


public class HBaseCreateTableDemo {
public static void main(String[] args) throws Exception {
System.out.println("======================================================================");
System.out.println("HBase Create Table Demo Start");
System.out.println("======================================================================");
Configuration config = HBaseConfiguration.create();
config.setBoolean("hbase.defaults.for.version.skip", Boolean.TRUE);
config.set("hbase.client.tdsql.quorum", "10.10.10.10:6752");
config.setBoolean("hbase.tdsql.hash.partition", Boolean.TRUE);
config.set("mysql.native.username", "test");
config.set("mysql.native.password", "test123");
// 定义表名和列族
final TableName tableName = TableName.valueOf("demo_table");
final byte[] INFO_CF = Bytes.toBytes("info");
final byte[] DETAIL_CF = Bytes.toBytes("detail");
try (Connection connection = ConnectionFactory.createConnection(config)) {
try (Admin admin = connection.getAdmin()) {
// 检查表是否已存在
if (admin.tableExists(tableName)) {
System.out.println("Table " + tableName.getNameAsString() + " already exists");
System.out.println("Skipping table creation...");
} else {
// 创建表描述符
// info列族: min_versions=1, max_versions=2
// detail列族: min_versions=2, max_versions=4
System.out.println("\\n=== Creating table: " + tableName.getNameAsString() + " ===");
TableDescriptorBuilder tdb = TableDescriptorBuilder.newBuilder(tableName);
tdb.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(INFO_CF)
.setMinVersions(1)
.setMaxVersions(2)
.build());
tdb.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(DETAIL_CF)
.setMinVersions(2)
.setMaxVersions(4)
.build());
// 创建表
admin.createTable(tdb.build());
System.out.println("Table created successfully: " + tableName.getNameAsString());
}
}
}
System.out.println("\\n======================================================================");
System.out.println("HBase Create Table Demo Completed");
System.out.println("======================================================================");
}
}
参数说明:
参数名称
类型
必需
说明
示例值
hbase.client.tdsql.quorum
String
TDSQL Boundless 服务的 RPC 地址和端口。
10.10.10.10:6752
hbase.tdsql.hash.partition
Boolean
启用 HBase 兼容模式,必须设置为true
Boolean.TRUE
mysql.native.username
String
用户账号。
user
mysql.native.password
String
账号密码。
passwd

管理列族(ColumnFamily)

对已存在的表进行列族结构调整,包括添加新列族和修改现有列族配置。
package com.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;

/**
* HBase 修改列族示例程序
* 演示如何修改表的列族属性
*/
public class HBaseModifyColumnFamilyDemo {
public static void main(String[] args) throws Exception {
System.out.println("======================================================================");
System.out.println("HBase Modify Column Family Demo Start");
System.out.println("======================================================================");
Configuration config = HBaseConfiguration.create();
config.set("hbase.client.tdsql.quorum", "10.10.10.10:6752");
config.setBoolean("hbase.tdsql.hash.partition", Boolean.TRUE);
config.set("mysql.native.username", "test");
config.set("mysql.native.password", "test123");
// 定义表名和列族
final TableName tableName = TableName.valueOf("demo_table");
final byte[] FAMILY = Bytes.toBytes("info");
final byte[] otherFamily = Bytes.toBytes("detail");
try (Connection connection = ConnectionFactory.createConnection(config)) {
try (Admin admin = connection.getAdmin()) {
// 检查表是否存在
if (!admin.tableExists(tableName)) {
System.out.println("✗ Table " + tableName.getNameAsString() + " does not exist");
System.out.println("Please create the table first.");
return;
}
System.out.println("Table " + tableName.getNameAsString() + " exists");
// 获取当前表的描述符
System.out.println("\\n=== Getting current table descriptor ===");
TableDescriptor current = admin.getDescriptor(tableName);
// 打印当前列族配置
System.out.println("\\nCurrent Column Family Configuration:");
for (ColumnFamilyDescriptor cf : current.getColumnFamilies()) {
System.out.println(" CF: " + Bytes.toString(cf.getName()));
System.out.println(" MinVersions: " + cf.getMinVersions());
System.out.println(" MaxVersions: " + cf.getMaxVersions());
System.out.println(" TimeToLive: " + cf.getTimeToLive());
}
// 修改第一个 CF 的 MaxVersions
System.out.println("\\n=== Modifying Column Family: " + Bytes.toString(FAMILY) + " ===");
ColumnFamilyDescriptor updatedPrimary =
ColumnFamilyDescriptorBuilder.newBuilder(current.getColumnFamily(FAMILY))
.setMaxVersions(current.getColumnFamily(FAMILY).getMaxVersions() + 3)
.build();
System.out.println(" Old MaxVersions: " + current.getColumnFamily(FAMILY).getMaxVersions());
System.out.println(" New MaxVersions: " + updatedPrimary.getMaxVersions());
// 修改第二个 CF 的 MinVersions 和 TimeToLive
System.out.println("\\n=== Modifying Column Family: " + Bytes.toString(otherFamily) + " ===");
ColumnFamilyDescriptor updatedSecondary =
ColumnFamilyDescriptorBuilder.newBuilder(current.getColumnFamily(otherFamily))
.setMinVersions(current.getColumnFamily(otherFamily).getMinVersions() + 1)
.setTimeToLive(60)
.build();
System.out.println(" Old MinVersions: " + current.getColumnFamily(otherFamily).getMinVersions());
System.out.println(" New MinVersions: " + updatedSecondary.getMinVersions());
System.out.println(" Old TimeToLive: " + current.getColumnFamily(otherFamily).getTimeToLive());
System.out.println(" New TimeToLive: " + updatedSecondary.getTimeToLive());
// 使用 modifyColumnFamily 应用修改
System.out.println("\\n=== Applying modifications ===");
TableDescriptor updated = TableDescriptorBuilder.newBuilder(current)
.modifyColumnFamily(updatedPrimary)
.modifyColumnFamily(updatedSecondary)
.build();
admin.modifyTable(updated);
System.out.println("Table modified successfully");
// 验证修改结果
System.out.println("\\n=== Verifying modifications ===");
TableDescriptor modified = admin.getDescriptor(tableName);
System.out.println("\\nModified Column Family Configuration:");
for (ColumnFamilyDescriptor cf : modified.getColumnFamilies()) {
System.out.println(" CF: " + Bytes.toString(cf.getName()));
System.out.println(" MinVersions: " + cf.getMinVersions());
System.out.println(" MaxVersions: " + cf.getMaxVersions());
System.out.println(" TimeToLive: " + cf.getTimeToLive());
}
}
}
System.out.println("\\n======================================================================");
System.out.println("HBase Modify Column Family Demo Completed");
System.out.println("======================================================================");
}
}

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈