Java在HBase数据库创建表

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/47836681

Java在HBase数据库创建表

作者:chszs,版权所有,未经同意,不得转载。博主主页:http://blog.csdn.net/chszs

要通过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();
            }
        }
    }
}
上一篇:Java文件的写入与读出


下一篇:Python爬虫抓取图片,网址从文件中读取