public void createTable(String tableName, String[] families) {
HBaseAdmin admin = null;
try {
admin = new HBaseAdmin(config);
if (admin.tableExists(tableName)) {
System.out.println("The table is existed.");
} else {
HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
for (String family : families) {
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(family);
hColumnDescriptor.setMaxVersions(5); //设定列的最大版本数目。默认是1,如果不指定,读取的时候只能取到一个值。
tableDescriptor.addFamily(hColumnDescriptor);
}
admin.createTable(tableDescriptor);
System.out.println("Create table is success.");
}
} catch (IOException e) {
logger.error("Create table {} is error.", tableName);
} finally {
if (admin != null) {
try {
admin.close();
} catch (IOException e) {
logger.error("Table {} close error.", tableName);
}
}
}
}
如果不加有注释的那条语句,则创建表后默认的版本数是1,插入和读取时都只有一个版本的值。如果需要多版本,则需要注意以下。