Hadoop3系列——(八)Java访问Hbase

pom文件

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>2.2.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.1.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
            <version>3.1.2</version>
        </dependency>

 

创建表:

public static void createTable(){
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","node1,node2,node3");

        try {
            //建立连接
            Connection conn = ConnectionFactory.createConnection(conf);
            Admin admin = conn.getAdmin();
            //添加表描述
            HTableDescriptor tableDes = new HTableDescriptor(TableName.valueOf("test11"));
            //添加族列
            HColumnDescriptor colDesc = new HColumnDescriptor("cf1");
            tableDes.addFamily(colDesc);//把族列添加到表
            admin.createTable(tableDes);//创建表
        } catch (Exception e) {
            e.printStackTrace();
        }
}

 

插入数据(修改也是用该方法):

public static void addData(){
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","node1,node2,node3");

        try {
            //建立连接
            Connection conn = ConnectionFactory.createConnection(conf);
            //连接表
            Table table = conn.getTable(TableName.valueOf("test11"));
            //设置Row Key
            Put put = new Put("110".getBytes());
            //设置列族名cf1,列名name,列值
            put.addColumn("cf1".getBytes(),"name".getBytes(),"aaaa".getBytes());
            table.put(put);
        } catch (Exception e) {
            e.printStackTrace();
        }
}

 

查询数据:

查询指定cell的数据

//获取指定cell数据
    public static void getData(){
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","node1,node2,node3");

        try {
            //建立连接
            Connection conn = ConnectionFactory.createConnection(conf);
            //连接表
            Table table = conn.getTable(TableName.valueOf("test11"));
            //通过Row Key获取指定行
            Get get = new Get("110".getBytes());
            Result rs = table.get(get);
            //通过行指定列,获取cell
            Cell cell = rs.getColumnLatestCell("cf1".getBytes(),"name".getBytes());
            System.out.println(new String(CellUtil.cloneRow(cell),"utf-8"));
            System.out.println(new String(CellUtil.cloneValue(cell),"utf-8"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

查询指定表的全部数据

//获取指定表的所有数据
    public static void getDataByScan(){
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","node1,node2,node3");

        try {
            //建立连接
            Connection conn = ConnectionFactory.createConnection(conf);
            //连接表
            Table table = conn.getTable(TableName.valueOf("test11"));
            Scan scan = new Scan();

            //获取遍历查询的结果
            ResultScanner resultScanner = table.getScanner(scan);
            //对结果集进行迭代
            Iterator its = resultScanner.iterator();
            while (its.hasNext()){
                Result rs = (Result) its.next();
                //通过行指定列,获取cell
                Cell cell = rs.getColumnLatestCell("cf1".getBytes(),"name".getBytes());
                System.out.println(new String(CellUtil.cloneRow(cell),"utf-8"));
                System.out.println(new String(CellUtil.cloneValue(cell),"utf-8"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值