HBase之连接管理

点击蓝字关注我吧

【本文详细介绍了HBase中连接管理相关的基本概念,欢迎读者朋友们阅读、转发和收藏!】

1 基本概念

HBase 提供了 Java Api 的访问接口,掌握这个就跟 Java 应用使用 RDBMS (关系数据库管理系统)时需要 JDBC 一样重要。操作数据库,首先需要连接 HBase 数据库,然后对 HBase 数据库进行增删改查操作。

看下面代码:

Configuration conf = new Configuration();// conf.addResource("hbase-site-cluster.xml");// 指定文件加载conf = HBaseConfiguration.create(conf);HBaseAdmin admin = new HBaseAdmin(conf);// HBaseAdmin 负责跟表相关的操作如 create,drop 等HTable table = new HTable(conf, Bytes.toBytes("blog")); //HTabel 负责跟记录相关的操作如增删改查等

上面首先是加载配置文件,这个配置文件当然有我们的配置信息,配置信息都包括什么可以查看前期的安装配置内容,我们加载配置干什么 ? 初始化 HBaseAdmin , HBaseAdmin 这个类负责什么,创建表、删除表等, HTable 负责相关的增删改查,所以这里我们不止找到了表的增删改查,而且还可以创建表、删除表。

1.1 练习前的准备工作

· 创建一个 Maven 工程,加入以下依赖:

< groupId>org.apache.hbase < artifactId>hbase < version>0.90.2< /dependency>如果你的 Maven 库里还没有 hbase ,还需要配置下 repository < repository> < id>cloudera < url> https://repository.cloudera.com/content/groups/public < /repository>

· 确保 HBase 环境已启动且能连接到,将 HBase 环境的 hbase-site.xml 文件拷贝到上述工程的 src/test/resources 目录

1.2 加载配置

Configuration conf = new Configuration();// conf.addResource("hbase-site-cluster.xml");// 可以指定文件加载conf = HBaseConfiguration.create(conf);

1.3 创建表

HTableDescriptor desc = new HTableDescriptor("wemedia");desc.addFamily(new HColumnDescriptor("datahouse"));desc.addFamily(new HColumnDescriptor("datawarehouse"));admin.createTable(desc );

1.4 增加记录

Put put = new Put(Bytes.toBytes("1"));put.add(Bytes.toBytes("article"), Bytes.toBytes("title"), Bytes.toBytes("数仓之HBase学习"));put.add(Bytes.toBytes("article"), Bytes.toBytes("content"), Bytes.toBytes("HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data."));put.add(Bytes.toBytes("article"), Bytes.toBytes("tags"), Bytes.toBytes("Hadoop,HBase,NoSQL"));put.add(Bytes.toBytes("author"), Bytes.toBytes("name"), Bytes.toBytes("datahouse"));put.add(Bytes.toBytes("author"), Bytes.toBytes("nickname"), Bytes.toBytes(" 数据仓库"));table.put(put);知识点回顾:RowKey 和 ColumnName 是二进制值( Java 类型 byte[] ), value 是一个字节数组( Java 类型 byte[] )

1.5 根据 RowKey 查询

Result result = table.get(get);for(KeyValue kv :result.list()){ System.out.println("family:" +Bytes.toString(kv.getFamily())); System.out.println("qualifier:" +Bytes.toString(kv.getQualifier())); System.out.println("value:" +Bytes.toString(kv.getValue())); System.out.println("Timestamp:" +kv.getTimestamp());}

1.6 遍历查询与迭代

Scan scan = new Scan();ResultScanner rs =null;try { rs = table.getScanner(scan); for (Result r : rs) { for(KeyValue kv :r.list()){ System.out.println("family:" +Bytes.toString(kv.getFamily())); System.out.println("qualifier:" +Bytes.toString(kv.getQualifier())); System.out.println("value:" +Bytes.toString(kv.getValue())); } }} finally { rs.close();}

我知道你在看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200604A0B1FU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券