要通过Java在HBase中创建一个数据表,首先需要导入hbase-client.jar驱动包。可以在项目pom.xml配置文件中添加依赖:
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client<artifactId> <version>1.1.0.1</version> <dependency>在添加依赖后,我们需要创建Configuration对象,并指定core-site.xml和hbase-site.xml作为资源文件。
Configuration config = HBaseConfiguration.create(); config.addResource(new Path("/etc/hbase/conf/hbase-site.xml")); config.addResource(new Path("/etc/Hadoop/conf/core-site.xml"));还需要在Configuration对象中设置hbase.zookeeper.quorum参数和hbase.zookeeper.property.clientPort参数的值,这些值也可以在hbase-site.xml配置文件中找到:
Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "127.0.0.1"); config.set("hbase.zookeeper.property.clientPort", "2181");Configuration对象创建完成后,接着创建连接到HBase数据库的Connection对象,并通过此对象获取Admin对象,它负责实现创建数据表的操作:
Connection connection = ConnectionFactory.createConnection(config); Admin admin = connection.getAdmin();一旦创建了Admin对象后,可以通过下面的代码创建数据表了:
String tableName = "users"; if (!admin.isTableAvailable(TableName.valueOf(tableName))) { HTableDescriptor hbaseTable = new HTableDescriptor(TableName.valueOf(tableName)); hbaseTable.addFamily(new HColumnDescriptor("name")); hbaseTable.addFamily(new HColumnDescriptor("contact_info")); hbaseTable.addFamily(new HColumnDescriptor("personal_info")); admin.createTable(hbaseTable); }会严重是否存在“users”名的数据表,如果此表不存在就会创建一个新表,列名包括:家庭名、联系信息和个人信息。
完整的程序如下:
package com.wordpress.khodeprasad; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; /** * @author Prasad Khode * */ public class CreateTable { public static void main(String[] args) { CreateTable object = new CreateTable(); object.createTable(); } public void createTable() { Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "127.0.0.1"); config.set("hbase.zookeeper.property.clientPort", "2181"); Connection connection = null; Admin admin = null; try { connection = ConnectionFactory.createConnection(config); admin = connection.getAdmin(); String tableName = "users"; if (!admin.isTableAvailable(TableName.valueOf(tableName))) { HTableDescriptor hbaseTable = new HTableDescriptor(TableName.valueOf(tableName)); hbaseTable.addFamily(new HColumnDescriptor("name")); hbaseTable.addFamily(new HColumnDescriptor("contact_info")); hbaseTable.addFamily(new HColumnDescriptor("personal_info")); admin.createTable(hbaseTable); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (admin != null) { admin.close(); } if (connection != null && !connection.isClosed()) { connection.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } }