Java客户端连接Hbase,并创建表(超详细)

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();
}

posted on 2019-03-26 14:00  二两老酒  阅读(6485)  评论(0编辑  收藏  举报

导航