Hbase_APIday02

本秂侑毒 提交于 2019-12-27 04:34:24
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static org.apache.hadoop.hbase.filter.CompareFilter.CompareOp.*;

public class HBaseAPI {


    //创建hbase数据表
    public static  void createtable() throws IOException {

    //1 连接数据库
    //2 对数据库进行操作
    //3 关闭连接

        Configuration conf=new Configuration();
        // Configuration configuration = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

        //实例admin管理员    创建   删除hbase表需要使用admin

        Admin admin = connection.getAdmin();

        //实例表名和表结构
        //表名
        TableName tableName=TableName.valueOf("myuser");
        //设置表结构
        HTableDescriptor hTableDescriptor=new HTableDescriptor(tableName);
        //设置列族
        HColumnDescriptor hColumnDescriptor1=new HColumnDescriptor("f1");
        HColumnDescriptor hColumnDescriptor2=new HColumnDescriptor("f2");

        //建立表与列族之间的关系
        hTableDescriptor.addFamily(hColumnDescriptor1);
        hTableDescriptor.addFamily(hColumnDescriptor2);

        admin.createTable(hTableDescriptor);
        admin.close();
        //关闭连接
        connection.close();


    }


    //向表内插入数据
        public static void putdata() throws IOException {

            //连接结数据库,找到需要添加的表
            Configuration conf=new Configuration();
            conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
            Connection connection = ConnectionFactory.createConnection(conf);

            Table myuser = connection.getTable(TableName.valueOf("myuser"));

            //示例数据
            Put put=new Put("0001".getBytes());
            put.addColumn("f1".getBytes(),"name".getBytes(),"zhangsan".getBytes());
            put.addColumn("f1".getBytes(),"id".getBytes(),"001".getBytes());
            put.addColumn("f1".getBytes(),"age".getBytes(),"18".getBytes());

            //插入数据
            myuser.put(put);

            //关闭连接
            connection.close();
        }


    //向表内插入数据
    public static void putdatas() throws IOException {

        //连接结数据库,找到需要添加的表
        Configuration conf=new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

        Table myuser = connection.getTable(TableName.valueOf("myuser"));

        //示例数据
        //创建put对象,并指定rowkey
        Put put = new Put("0002".getBytes());
        put.addColumn("f1".getBytes(),"id".getBytes(), Bytes.toBytes(1));
        put.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("曹操"));
        put.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(30));
        put.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("沛国谯县"));
        put.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("16888888888"));
        put.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("helloworld"));

        Put put2 = new Put("0003".getBytes());
        put2.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(2));
        put2.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("刘备"));
        put2.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(32));
        put2.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put2.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("幽州涿郡涿县"));
        put2.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("17888888888"));
        put2.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("talk is cheap , show me the code"));


        Put put3 = new Put("0004".getBytes());
        put3.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(3));
        put3.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("孙权"));
        put3.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(35));
        put3.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put3.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("下邳"));
        put3.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("12888888888"));
        put3.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("what are you 弄啥嘞!"));

        Put put4 = new Put("0005".getBytes());
        put4.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(4));
        put4.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("诸葛亮"));
        put4.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(28));
        put4.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put4.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("四川隆中"));
        put4.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("14888888888"));
        put4.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("出师表你背了嘛"));

        Put put5 = new Put("0005".getBytes());
        put5.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(5));
        put5.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("司马懿"));
        put5.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(27));
        put5.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put5.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("哪里人有待考究"));
        put5.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("15888888888"));
        put5.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("跟诸葛亮死掐"));


        Put put6 = new Put("0006".getBytes());
        put6.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(5));
        put6.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("xiaobubu—吕布"));
        put6.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(28));
        put6.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put6.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("内蒙人"));
        put6.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("15788888888"));
        put6.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("貂蝉去哪了"));


        List<Put> datas=new ArrayList<>();

        datas.add(put);
        datas.add(put2);
        datas.add(put3);
        datas.add(put4);
        datas.add(put5);
        datas.add(put6);



        //插入数据
        myuser.put(datas);

        //关闭连接
        connection.close();
    }


    //获取某一行数据
    public static void getdata() throws IOException {

            //连接数据库
        Configuration conf=new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

            //获取报表
        Table myuser = connection.getTable(TableName.valueOf("myuser"));

            //设置需要读取的数据(rowkey)
        Get get=new Get("0004".getBytes());

        //查询某一个列族的数据
        //get.addFamily("f1".getBytes());

        //查询指定列族下的特定列,查询
       // get.addColumn("f1".getBytes(),"name".getBytes());




            //读取数据  一个result,就是一行数据
        Result result = myuser.get(get);

        String rowkey = Bytes.toString(result.getRow());
        String name  = Bytes.toString(result.getValue("f1".getBytes(), "name".getBytes()));
        System.out.println(rowkey+ "        "+name);


     /*            //遍历数据
        Cell[] cells = result.rawCells();
        for (Cell cell : cells) {

            if (Bytes.toString(CellUtil.cloneQualifier(cell)).equals("id")  || Bytes.toString(CellUtil.cloneQualifier(cell)).equals("age")){
                System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
                System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
                System.out.println(Bytes.toInt(CellUtil.cloneValue(cell)));

            }else{
                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 scandata() throws IOException {

    //连接数据库
    Configuration conf=new Configuration();
    conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
    Connection connection = ConnectionFactory.createConnection(conf);

    //获取报表
    Table myuser = connection.getTable(TableName.valueOf("myuser"));

    Scan scan =new Scan();
    //设置区间扫描
    scan.setStartRow("0002".getBytes());
    scan.setStopRow("0005".getBytes());


    ResultScanner scanner = myuser.getScanner(scan);
    for (Result result : scanner) {
        String rowkey = Bytes.toString(result.getRow());
        String name  = Bytes.toString(result.getValue("f1".getBytes(), "name".getBytes()));
        System.out.println(rowkey+ "        "+name);
    }

    //关闭连接
    connection.close();
}


//查询rowkey小于0005的数据
public static void rowKeyFilter() throws IOException {

    //连接数据库
    Configuration conf=new Configuration();
    conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
    Connection connection = ConnectionFactory.createConnection(conf);

    //获取报表
    Table myuser = connection.getTable(TableName.valueOf("myuser"));

    Scan scan =new Scan();
    //设置区间扫描

    RowFilter rowFilter=new RowFilter(GREATER_OR_EQUAL,new BinaryComparator("0005".getBytes()));
    scan.setFilter(rowFilter);

    ResultScanner scanner = myuser.getScanner(scan);
    for (Result result : scanner) {
        String rowkey = Bytes.toString(result.getRow());
        String name  = Bytes.toString(result.getValue("f1".getBytes(), "name".getBytes()));
        System.out.println(rowkey+ "        "+name);
    }

    //关闭连接
    connection.close();
}

//列族过滤器
    public static void familyFilter() throws IOException {

        //连接数据库
        Configuration conf=new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

        //获取报表
        Table myuser = connection.getTable(TableName.valueOf("myuser"));

        Scan scan =new Scan();
        //设置区间扫描
        //RowFilter rowFilter=new RowFilter(GREATER_OR_EQUAL,new BinaryComparator("0005".getBytes()));

        //列族的过滤器
        FamilyFilter familyFilter=new FamilyFilter(EQUAL,new BinaryComparator("f2".getBytes()));
        scan.setFilter(familyFilter);

        ResultScanner scanner = myuser.getScanner(scan);
        for (Result result : scanner) {
            String rowkey = Bytes.toString(result.getRow());
            String name  = Bytes.toString(result.getValue("f1".getBytes(), "name".getBytes()));
            System.out.println(rowkey+ "        "+name);
        }

        //关闭连接
        connection.close();
    }

    //列名过滤器
    public static void qualifierFilter() throws IOException {

        //连接数据库
        Configuration conf=new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

        //获取报表
        Table myuser = connection.getTable(TableName.valueOf("myuser"));

        Scan scan =new Scan();
        //设置区间扫描
        //RowFilter rowFilter=new RowFilter(GREATER_OR_EQUAL,new BinaryComparator("0005".getBytes()));

        //列族的过滤器
        //FamilyFilter familyFilter=new FamilyFilter(EQUAL,new BinaryComparator("f2".getBytes()));

        //列名的过滤器
        QualifierFilter qualifierFilter=new QualifierFilter(EQUAL,new SubstringComparator("name"));
        scan.setFilter(qualifierFilter);

        ResultScanner scanner = myuser.getScanner(scan);
        for (Result result : scanner) {
            String rowkey = Bytes.toString(result.getRow());
            String name  = Bytes.toString(result.getValue("f1".getBytes(), "name".getBytes()));
            System.out.println(rowkey+ "        "+name);
        }

        //关闭连接
        connection.close();
    }

    //列值过滤器
    public static void valueFilter() throws IOException {

        //连接数据库
        Configuration conf=new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

        //获取报表
        Table myuser = connection.getTable(TableName.valueOf("myuser"));

        Scan scan =new Scan();

        ValueFilter valueFilter=new ValueFilter(EQUAL,new SubstringComparator("8"));
        scan.setFilter(valueFilter);

        ResultScanner scanner = myuser.getScanner(scan);
        for (Result result : scanner) {
            String rowkey = Bytes.toString(result.getRow());
            String name  = Bytes.toString(result.getValue("f2".getBytes(), "phone".getBytes()));
            System.out.println(rowkey+ "        "+name);
        }

        //关闭连接
        connection.close();
    }

    //单列过滤器
    public static void singleColumnFilter() throws IOException {

        //连接数据库
        Configuration conf=new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

        //获取报表
        Table myuser = connection.getTable(TableName.valueOf("myuser"));

        Scan scan =new Scan();

        //SingleColumnValueFilter singleColumnValueFilter=new SingleColumnValueFilter("f1".getBytes(),"name".getBytes(),NOT_EQUAL,"刘备".getBytes());
        PrefixFilter  prefixFilter =new PrefixFilter("000".getBytes());
        scan.setFilter(prefixFilter);
        ResultScanner scanner = myuser.getScanner(scan);
        for (Result result : scanner) {
            String rowkey = Bytes.toString(result.getRow());
            String name  = Bytes.toString(result.getValue("f1".getBytes(), "name".getBytes()));
            System.out.println(rowkey+ "        "+name);
        }

        //关闭连接
        connection.close();
    }

    //通过rowkey删除数据
    public static void deletedatabyrowkey() throws IOException {

        //连接数据库
        Configuration conf=new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

        //获取报表
        Table myuser = connection.getTable(TableName.valueOf("myuser"));

        Delete delete=new Delete("0001".getBytes());
        myuser.delete(delete);


        //关闭连接
        connection.close();
    }

    //删除数据表
    public static void deletetable() throws IOException {

        //连接数据库
        Configuration conf=new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);

        Admin admin = connection.getAdmin();
        admin.disableTable(TableName.valueOf("myuser"));

        admin.deleteTable(TableName.valueOf("myuser"));

        //关闭连接
        connection.close();
    }




    //程序的入口
    public static void main(String[] args) throws IOException{
        createtable();
        //putdata();
        putdatas();
        //getdata();
        //scandata();
        //rowKeyFilter();
        //familyFilter();
        //qualifierFilter();
        //valueFilter();


        //singleColumnFilter();
       // deletedatabyrowkey();
      //  deletetable();
    }
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!