public static void Test() throws URISyntaxException, IOException
{
System.out.println("開始執行");
//初始化Hbase連接
Configuration configuration = HBaseConfiguration.create();
//加載配置文件
configuration.addResource(new Path(ClassLoader.getSystemResource("hbase-site.xml").toURI()));
configuration.addResource(new Path(ClassLoader.getSystemResource("core-site.xml").toURI()));
Connection connection = ConnectionFactory.createConnection(configuration);
System.out.println("連接成功!");
//設置表名
TableName tableName = TableName.valueOf("xuehu01");
//將表名傳遞給HTableDescriptor
HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
//創建列族
HColumnDescriptor mycg = new HColumnDescriptor("mycg");
//將列族添加進表中
hTableDescriptor.addFamily(mycg);
//Admin是操作表的類,具有創建
Admin admin = connection.getAdmin();
admin.createTable(hTableDescriptor);
if (admin.tableExists(hTableDescriptor.getTableName()))
{
admin.disableTable(hTableDescriptor.getTableName());
admin.deleteTable(hTableDescriptor.getTableName());
}
admin.createTable(hTableDescriptor);
System.out.println("創建列族");
//設置列族的壓縮方式為GZ
mycg.setCompactionCompressionType(Compression.Algorithm.GZ);
//把最大版本數修改為ALL.VERSION,其實就是Integer.MAX_VALUE
mycg.setMaxVersions(HConstants.ALL_VERSIONS);
//把列族的定義更新到表定義里面去
hTableDescriptor.modifyFamily(mycg);
//不過此時對表的修改還沒有真正執行下去,只有調用Admin類來進行操作的時候才真正開始執行
//當執行了modifyTable方法后,對表的修改才真正完成
admin.modifyTable(tableName,hTableDescriptor);
//刪掉之前建立的列族
//首先進行停用表
admin.disableTable(tableName);
//然后進行刪除列族
admin.deleteColumn(tableName,"mycf".getBytes("UTF-8"));
admin.deleteTable(tableName);
admin.close();
connection.close();
}