TDSQL Boundless 数据库模式设计

表是数据存储的基本单位。创建表时需要指定表名、列族以及行键。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.HB。

相关产品
TDSQL Boundless 产品页,含版本规格、价格与购买入口。

一、创建表

通过 HBase API 语句创建表。

参数说明:

参数名称 类型 必需 说明 示例值
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("======================================================================"); }}

赞 (0)
上一篇 4天前
下一篇 4天前