HBase存储操作类

HBase存储操作类


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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import java.io.IOException;
/**
 * HBase存储操作类(保存RAWData、PerceptData).目前阶段只有互联网。
 * @Data 2020-10-15
 * @author gxq
 *
 */
public class HBaseStorage {

    private Logger logger = LoggerFactory.getLogger(getClass());
    //与HBase数据库的连接对象
    static Connection connection;
    //数据库元数据操作对象
    private static Admin admin;
    /**
     * 构造
     * @param args
     */
    private static HBaseStorage instance;
    /**
     * 获得单列
     * @param
     */
    public static synchronized HBaseStorage getInstance(){
        if(instance == null){
            instance = new HBaseStorage();
        }
        return instance;
    }

    /**
     * 连接
     * @param url
     * @param port
     * @param path
     */
    public void setUp(String url,String port,String path){
        //取得一个数据库连接的配置参数对象
        Configuration conf = HBaseConfiguration.create();
        //设置连接参数,HBase数据库所在主机IP
        conf.set("hbase.zookeeper.quorum",url);
        //设置主机参数。HBase数据库使用端口
        conf.set("hbase.zookeeper.property.clientPort",port);
//        conf.set("hbase.master","192.168.221.128:9001");
        conf.set("zookeeper.znode.parent",path);
        //取得一个数据库连接对象
        try {
            connection = ConnectionFactory.createConnection(conf);
            admin = connection.getAdmin();
            //取得一个数据库元数据操作对象
            logger.info("HBase connection successfully!");
        }catch (Exception exc){
            logger.error(exc.toString());
        }

    }
    public void closeHbase(){
        try {
            admin.close();
        }catch (IOException e){
            logger.error(e.toString());

        }
    }

    /**
     * 创建表
     */
    public void createTable(String tablename,String families) throws IOException{
        //新建一个数据表表明对象
        TableName tableName= TableName.valueOf(tablename);
        if(admin.tableExists(tableName)) {
            logger.info("表已经存在!");
        }else{
            logger.info("表创建start");
            //数据表描述对象
            HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
            //列族描述对象
            for (String fam:families.split(",")) {
                HColumnDescriptor family = new HColumnDescriptor((fam));
                //在数据表中新建一个列族
                hTableDescriptor.addFamily(family);
            }
            admin.createTable(hTableDescriptor);
            logger.info("表创建成功");

            }

        }
    public static void main(String[] args) {
      HBaseStorage baseStorage=HBaseStorage.getInstance();
      baseStorage.setUp("192.168.221.128","2181","/hbase");
      try {
          baseStorage.createTable("job_internet","RAW_DATA,TAG_DATA,PERCEPT_DATA");
//          baseStorage.createTable("job_ai", "ai");
      }catch (IOException e){
          e.printStackTrace();
      }

    }

}

在hbase中创建一个名为 job_ai的表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值