HbaseApi

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.NamespaceExistException;
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.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

/**
 *  * 一. DDL
 *  * 0. 判断表是否存在
 *  * 1. 创建表 Create
 *  * 2. 删除表 disable drop
 *  * 3. 创建命名空间 Create NameSpace
 *  * 二. DML
 *  * 1. 添加数据 put
 *  * 2. 查询(get)
 *  * 3. 查询(scan)
 *  * 4. 删除数据 delete
 * @Author qiao
 * @Date 2019/11/9 10:47
 * @Version 1.0
 */
public class HbaseApiDemo {
    //    声明管理员对象
    private static Admin admin = null;
    //声明连接
    private static Connection connection = null;

    //初始化
    static {
        try {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "hadoop102,hadoop103,hadoop104");
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 关闭资源
     *
     * @throws IOException
     */
    public static void close() throws IOException {
        if (admin != null) {
            admin.close();
        }
        if (connection != null) {
            connection.close();
        }
    }

    /**
     * 判断表是否存在
     *
     * @param tableName
     * @return
     * @throws IOException
     */
    public static boolean isTableExsit(String tableName) throws IOException {
        boolean exists = admin.tableExists(TableName.valueOf(tableName));
        return exists;
    }

    /**
     * 创建表
     *
     * @param tableName
     * @param factory
     * @throws IOException
     */
    public static void createTable(String tableName, String... factory) throws IOException {
        if (isTableExsit(tableName)) {
            System.out.println(tableName + "表已经存在");
            return;
        }
        if (factory.length <= 0) {
            System.out.println("参数异常");
            return;
        }
        HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(tableName));
        for (String s : factory) {
            HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(s);
            descriptor.addFamily(hColumnDescriptor);
        }
        admin.createTable(descriptor);

    }

    /**
     * 删除表
     * @param tableName
     * @throws IOException
     */
    public static void deleteTable(String tableName)throws IOException {
        if (!isTableExsit(tableName)){
            System.out.println(tableName + "表不存在");
            return;
        }
//        清空表
        admin.disableTable(TableName.valueOf(tableName));
        admin.deleteTable(TableName.valueOf(tableName));
    }

    /**
     * 创建命名空间
     * @param nameSpace
     * @throws IOException
     */
    public static void createNameSpace(String nameSpace)throws IOException{
        try {
            NamespaceDescriptor build = NamespaceDescriptor.create(nameSpace).build();
            admin.createNamespace(build);
        }catch (NamespaceExistException e){
            System.out.println(nameSpace + "命名空间已存在");
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 添加数据
     * @param tableName
     * @param rk
     * @param cloneFamily
     * @param cn
     * @param value
     * @throws IOException
     */
    public static void put(String tableName,String rk,String cloneFamily,String cn,String value)throws IOException {
//            创建表对象
        Table table = connection.getTable(TableName.valueOf(tableName));
//        添加数据
        Put putObject = new Put(Bytes.toBytes(rk));
        putObject.addColumn(Bytes.toBytes(cloneFamily),Bytes.toBytes(cn),Bytes.toBytes(value));
        table.put(putObject);
        table.close();
    }

    /**
     * Get查询
     * @param tableName
     * @param rk
     * @throws IOException
     */
    public  static  void get(String tableName,String rk)throws IOException{
//        创建表对象
        Table table = connection.getTable(TableName.valueOf(tableName));
//        创建Get对象
        Get getObject = new Get(Bytes.toBytes(rk));
        //获取结果集
        Result result = table.get(getObject);
//        循环d打印结果
        for (Cell cell : result.rawCells()) {
            System.out.println("RK:"+ Bytes.toString(CellUtil.cloneRow(cell))
                    +",   cloneFamily:"+Bytes.toString(CellUtil.cloneFamily(cell))
                    +",   CN:"+Bytes.toString(CellUtil.cloneQualifier(cell))
                    +",   Value :"+Bytes.toString(CellUtil.cloneValue(cell))
            );
        }

//        关闭资源
        table.close();

    }

    public static  void scan(String tableName)throws IOException{
//        创建表对象
        Table table = connection.getTable(TableName.valueOf(tableName));
//        创建Scan对象
        Scan scanObject = new Scan();
//        获取结果集
        ResultScanner scanner = table.getScanner(scanObject);
//        循环打印
        for (Result result : scanner) {
            for (Cell cell : result.rawCells()) {
                System.out.println("RK:"+ Bytes.toString(CellUtil.cloneRow(cell))
                        +",   cloneFamily:"+Bytes.toString(CellUtil.cloneFamily(cell))
                        +",   CN:"+Bytes.toString(CellUtil.cloneQualifier(cell))
                        +",   Value :"+Bytes.toString(CellUtil.cloneValue(cell))
                );
            }
        }

//        关闭资源
        table.close();
    }

    /**
     * 测试方法
     *
     * @param args
     */
    public static void main(String[] args) throws IOException {
//        判断表是否存在
//        System.out.println(isTableExsit("student"));
//        创建表
//        createTable("employee","info","data");
//        deleteTable("employee");
//        createNameSpace("1703D");
        put("employee","1001","info","name","a1");
        put("employee","1001","info","age","18");
        put("employee","1002","info","name","a2");
        put("employee","1003","info","name","a3");
//        get("employee","1001");
        scan("employee");
        close();
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值