HBase的API操作(DDL)

使用HBase的Admin进行DDL操作,Admin API 与 RDBMS 的 Data Definition Language (DDL) 类似,提供了各种数据管理操作功能:创建表,检查表是否存在,修改表和列族定义,删除表等。

添加jar包

HBase安装目录的lib下所有jar包
hbase

TestAdmin.java DDL操作类

public class TestAdmin {
	private static final String TABLE_NAME = "MY_HBASE_TABLE_TADMIN";
	private static final String CF_DEFAULT = "DEFAULT_COLUMN_FAMILY";
	/**
	 * 创建表、删除表
	 */
	public static void createOrOverwrite(Admin admin,
			@SuppressWarnings("deprecation") HTableDescriptor table)
			throws IOException {
		if (admin.tableExists(table.getTableName())) {
			// Disable an existing table
			admin.disableTable(table.getTableName());
			// Delete a table (Need to be disabled first)
			admin.deleteTable(table.getTableName());
		}
		admin.createTable(table);
	}

	/**
	 * 创建具体表
	 */
	public static void createSchemaTables() throws IOException {
		Configuration config = HBaseConfiguration.create();
		Connection conn = ConnectionFactory.createConnection(config);
		Admin admin = conn.getAdmin();
		HTableDescriptor table = new HTableDescriptor(
				TableName.valueOf(TABLE_NAME));
		table.setReadOnly(false);
		table.addFamily(new HColumnDescriptor(CF_DEFAULT)
				.setCompressionType(Algorithm.NONE));
		System.out.print("Creating table. ");
		createOrOverwrite(admin, table);
		System.out.println(" Done.");
		//释放资源
		admin.close();
		conn.close();
	}

	/**
	 * 获取所有表名称,对应shell命令:list
	 */
	public static void listTables() throws IOException {
		Configuration config = HBaseConfiguration.create();
		Connection conn = ConnectionFactory.createConnection(config);
		Admin admin = conn.getAdmin();
		TableName[] tables = admin.listTableNames();
		for(TableName tn:tables){
			System.out.println(" table: "+tn);
		}
		//释放资源
		admin.close();
		conn.close();
	}

	public static void main(String... args) throws IOException {
		createSchemaTables();
		listTables();
	}
}

运行结果

result
list
参考资料:HBase 管理 API: HBaseAdmin (HBase DDL)

猜你喜欢

转载自blog.csdn.net/weixin_44153121/article/details/87185642