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();
}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值