每日学习

今天熟悉HBASE使用

使用hbaseapi

代码:

package test;

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;

public class TestAPI {
    public static Connection conf=null;

    //判断表是否存在
    public static boolean isTableExist(String tableName) throws MasterNotRunningException, ZooKeeperConnectionException, IOException{
        boolean exist=false;
        //获取配置信息
//        HBaseConfiguration hBaseConfiguration=new HBaseConfiguration();
//        hBaseConfiguration.set("hbase.zookeeper.quorum","Hadoop102,Hadoop103,Hadoop104");
        Configuration configuration=HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum","Hadoop102,Hadoop103,Hadoop104");
        //获取管理员信息
//        HBaseAdmin admin=new HBaseAdmin(hBaseConfiguration);
        Connection connection= ConnectionFactory.createConnection(configuration);
        Admin admin=connection.getAdmin();
        //判断是否存在
//        exist=admin.tableExists(tableName);
//        admin.close();
        exist=admin.tableExists(TableName.valueOf(tableName));
        connection.close();
        return exist;
    }
    //向表里插入数据
    public static void addRowData(String tableName, String rowKey, String columnFamily, String
            column, String value) throws IOException{
        Configuration configuration=HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum","Hadoop102,Hadoop103,Hadoop104");
        Connection connection= ConnectionFactory.createConnection(configuration);
        //创建HTable对象
        Table hTable = connection.getTable(TableName.valueOf(tableName));
        //向表中插入数据
        Put put = new Put(Bytes.toBytes(rowKey));
        //向Put对象中组装数据
        put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
        hTable.put(put);
        hTable.close();
        System.out.println("插入数据成功");
        connection.close();
    }
    //从表里获取全部数据
    public static void getAllRows(String tableName) throws IOException{
        Configuration configuration=HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum","Hadoop102,Hadoop103,Hadoop104");
        Connection connection= ConnectionFactory.createConnection(configuration);
        Table hTable = connection.getTable(TableName.valueOf(tableName));
        //得到用于扫描region的对象
        Scan scan = new Scan();
        //使用HTable得到resultcanner实现类的对象
        ResultScanner resultScanner = hTable.getScanner(scan);
        for(Result result : resultScanner){
            Cell[] cells = result.rawCells();
            for(Cell cell : cells){
                //得到rowkey
                System.out.println("行键:" + Bytes.toString(CellUtil.cloneRow(cell)));
                //得到列族
                System.out.println("列族" + Bytes.toString(CellUtil.cloneFamily(cell)));
                System.out.println("列:" + Bytes.toString(CellUtil.cloneQualifier(cell)));
                System.out.println("值:" + Bytes.toString(CellUtil.cloneValue(cell)));
            }
        }
        connection.close();
    }
    //获取某一行的数据
    public static void getRow(String tableName, String rowKey) throws IOException{
        Configuration configuration=HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum","Hadoop102,Hadoop103,Hadoop104");
        Connection connection= ConnectionFactory.createConnection(configuration);
        Table table = connection.getTable(TableName.valueOf(tableName));
        Get get = new Get(Bytes.toBytes(rowKey));
        //get.setMaxVersions();显示所有版本
        //get.setTimeStamp();显示指定时间戳的版本
        Result result = table.get(get);
        for(Cell cell : result.rawCells()){
            System.out.println("行键:" + Bytes.toString(result.getRow()));
            System.out.println("列族" + Bytes.toString(CellUtil.cloneFamily(cell)));
            System.out.println("列:" + Bytes.toString(CellUtil.cloneQualifier(cell)));
            System.out.println("值:" + Bytes.toString(CellUtil.cloneValue(cell)));
            System.out.println("时间戳:" + cell.getTimestamp());
        }
        connection.close();
    }
    public static void main(String[] args) {
        try {
//            System.out.println(isTableExist("Student"));
//           addRowData("Student","1003","Name","","scofield");
//            addRowData("Student","1003","Score","English","45");
//            addRowData("Student","1003","Score","Math","89");
//            addRowData("Student","1003","Score","Computer","100");
//            getAllRows("student");
            getRow("Student","1001");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

posted @ 2021-09-23 11:16  哦心有  阅读(39)  评论(0)    收藏  举报