hbase 的shell命令,创建表时,常常用的是简写的写法:如下
create 't1','c1','c2'
以上代表创建t1表,有c1,c2两个列族,但是这种写法,其他比如版本数,是否压缩等其他属性,则是默认配置。不能手动配置属性,如果配置的话,会报错unknown配置的属性!
若想具体设置,就要具体写完整的建表语句。比如
想创建一个表,版本数为2,使用snappy压缩,则要如下写命令:
create 't3',{NAME=>'c1',VERSIONS=>2,COMPRESSION=>'snappy'},{NAME=>'c2',VERSIONS=>3},SPLITS=>['0','1','2','3']
以上创建了t3表,第一个列族c1,版本号为2,压缩算法为 'snappy',第二个列族为c2,版本号为3,不使用压缩算法,整个表被预分区
随便desc一个表,出现的那些属性都可以这样来配置
使用api来创建使用snappy压缩算法的表:
@Test
public void createTable() throws Exception {
// 创建表管理类
HBaseAdmin admin = new HBaseAdmin(config); // hbase表管理
// 创建表描述类
TableName tableName = TableName.valueOf("t3"); // 表名称
HTableDescriptor desc = new HTableDescriptor(tableName);
// 创建列族的描述类
HColumnDescriptor family = new HColumnDescriptor("info"); // 列族
family.setCompressionType(Algorithm.SNAPPY);
// 将列族添加到表中
desc.addFamily(family);
//HColumnDescriptor family2 = new HColumnDescriptor("info2"); // 列族
// 将列族添加到表中
//desc.addFamily(family2);
// 创建表
admin.createTable(desc); // 创建表
}