JDBC:Java操作Hbase的代码!

package hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.util.Iterator;

public class App {
    static Connection connection;
    static Configuration configuration;
    static Admin admin;

    public static void main(String[] args) throws IOException {
        init();
        //createTable("stu",new String[]{"info","sub"});
        //addData("stu","001","info","name","zhu");
        //addData("stu","001","info","gender","male");
        //addData("stu","001","info","addr","beijing");
        //addData("stu","001","sub","Math","20");
        //addData("stu","001","sub","Chinese","30");
        //addData("stu","001","sub","English","50");
        //selectData("stu");
        //serchData("stu","001");
        //deleteData("stu","001");
        //droptable("stu");
        closeAll();
    }
    //1.创建Hbase连接的函数  初始化
    public static void init() throws IOException {
        configuration= HBaseConfiguration.create();//配置对象
        connection= ConnectionFactory.createConnection(configuration);
        System.out.println(connection);
        admin=connection.getAdmin();
    }
    //2.释放资源
    public static void closeAll() throws IOException {
        admin.close();
        connection.close();
    }
    //3.创建数据表
    public static void createTable(String name,String columnFamliy[]) throws IOException {
        //1.判断表名是否存在
        TableName tableName=TableName.valueOf(name);
        if (admin.tableExists(tableName)){
            System.out.println("表已经存在!");
        }else {
            //创建表的描述对象
            HTableDescriptor descriptor=new HTableDescriptor(tableName);
            for (String column:columnFamliy) {
                //创建列族的描述对象
                HColumnDescriptor columnDescriptor=new HColumnDescriptor(column);
                //绑定
                descriptor.addFamily(columnDescriptor);
            }
            admin.createTable(descriptor);
            System.out.println(name+"表创建成功!");
        }
    }
    //4.新增数据
    public static void addData(String tableName,String rowKey,String columanFamliyName,String columanName,String values) throws IOException {
        Table table=connection.getTable(TableName.valueOf(tableName));
        Put put=new Put(rowKey.getBytes());
        put.addColumn(columanFamliyName.getBytes(),columanName.getBytes(),values.getBytes());
        table.put(put);//添加数据
    }
    //5.查询表中所有数据
    public static void selectData(String tableName) throws IOException {
        Table table=connection.getTable(TableName.valueOf(tableName));//获取表对象
        ResultScanner scanner=table.getScanner(new Scan());
        Iterator<Result> iterator = scanner.iterator();
        while (iterator.hasNext()){
            Result next = iterator.next();
            for (Cell cell:next.rawCells()) {
                System.out.print("row key:"+ Bytes.toString(next.getRow()));
                System.out.print(",Column Famliy:"+Bytes.toString(CellUtil.cloneFamily(cell)));
                System.out.print(",Column:"+Bytes.toString(CellUtil.cloneQualifier(cell)));
                System.out.print(",values:"+Bytes.toString(CellUtil.cloneValue(cell)));
                System.out.println();
            }
        }
    }
    //6.检索数据
    public static void serchData(String tableName,String rowKey) throws IOException {
        Table table=connection.getTable(TableName.valueOf(tableName));
        Get get=new Get(rowKey.getBytes());
        Result result=table.get(get);
        for (Cell cell:result.rawCells()) {
            System.out.print("row key:"+ rowKey);
            System.out.print(",Column Famliy:"+Bytes.toString(CellUtil.cloneFamily(cell)));
            System.out.print(",Column:"+Bytes.toString(CellUtil.cloneQualifier(cell)));
            System.out.print(",values:"+Bytes.toString(CellUtil.cloneValue(cell)));
            System.out.println();
        }
    }
    //7.删除数据
    public static void deleteData(String tableName,String rowKey) throws IOException {
        Table table=connection.getTable(TableName.valueOf(tableName));
        Delete delete=new Delete(rowKey.getBytes());
        table.delete(delete);
    }
    //8.删除表,删除之前需要禁用,enable可用disable禁用
    public static void droptable(String tableName) throws IOException {
        if (admin.tableExists(TableName.valueOf(tableName))){
            //证明表存在
            admin.disableTable(TableName.valueOf(tableName));
            admin.deleteTable(TableName.valueOf(tableName));
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值