HBase schemas 可以通过 The Apache HBase Shell 或者 Java API Admin 来创建或者更新。

当进行列族的修改时,必须禁用表,比如:

Configuration config = HBaseConfiguration.create();
Admin admin = new Admin(conf);
TableName table = TableName.valueOf("myTable");

admin.disableTable(table);

HColumnDescriptor cf1 = ...;
admin.addColumn(table, cf1);      // adding new ColumnFamily
HColumnDescriptor cf2 = ...;
admin.modifyColumn(table, cf2);    // modifying existing ColumnFamily

admin.enableTable(table);

阅读 client dependencies 获取关于配置客户端连接的更多信息。

0.92.x 可以支持在线 scheme 变更, 但是 0.90.x 版本需要禁用表。

34.1. Schema 更新

当表或者列族被修改时(比如 region 大小,block 大小),这些更改会在下一次 major 合并时生效,同时 StoreFiles 会被重写。

阅读 store 获取更多关于 StoreFiles 的信息。