专栏首页数据饕餮Hbase API开发实例(Java版)

Hbase API开发实例(Java版)

import java.io.IOException; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.util.Map; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.io.Writable; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.util.*; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.util.Writables; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.MasterNotRunningException; //import org.apache.hadoop.hbase.ZooKeeperConnectionException; public class HBaseHandler {     private static HBaseConfiguration conf = null;     /**      * 初始化配置      */     static {        //conf = HBaseConfiguration.create();          conf = new HBaseConfiguration();          conf.addResource("hbase-site.xml");     }     /**      * @param args      * @throws IOException      */     public static void main(String[] args) throws IOException {         // TODO Auto-generated method stub         System.out.println("Helloworld");         String[] cfs;         cfs = new String[1];         cfs[0] = "Hello";         createTable("Test",cfs);     }     /**      * 创建表操作      * @throws IOException      */     public static void createTable(String tablename, String[] cfs) throws IOException {         HBaseAdmin admin = new HBaseAdmin(conf);         if (admin.tableExists(tablename)) {             System.out.println("表已经存在!");         }         else {             HTableDescriptor tableDesc = new HTableDescriptor(tablename);             for (int i = 0; i < cfs.length; i++) {                 tableDesc.addFamily(new HColumnDescriptor(cfs[i]));             }             admin.createTable(tableDesc);             System.out.println("表创建成功!");         }     }         /**      * 删除表操作      * @param tablename      * @throws IOException      */     public static void deleteTable(String tablename) throws IOException     {         try {             HBaseAdmin admin = new HBaseAdmin(conf);             admin.disableTable(tablename);             admin.deleteTable(tablename);             System.out.println("表删除成功!");         }         catch (MasterNotRunningException e)         {             e.printStackTrace();         }     }     /**      * 插入一行记录      * @param tablename      * @param cfs      */     public static void writeRow(String tablename, String[] cfs) {         try {             HTable table = new HTable(conf, tablename);             Put put = new Put(Bytes.toBytes("rows1"));             for (int j = 0; j < cfs.length; j++) {                 put.add(Bytes.toBytes(cfs[j]),                         Bytes.toBytes(String.valueOf(1)),                         Bytes.toBytes("value_1"));                 table.put(put);             }         } catch (IOException e) {             e.printStackTrace();         }     }     /**      * 删除一行记录      * @param tablename      * @param rowkey      * @throws IOException      */     public static void deleteRow(String tablename, String rowkey) throws IOException {         HTable table = new HTable(conf, tablename);         List list = new ArrayList();         Delete d1 = new Delete(rowkey.getBytes());         list.add(d1);         table.delete(d1);         System.out.println("删除行成功!");     }     /**      * 查找一行记录      * @param tablename      * @param rowkey      */     public static void selectRow(String tablename, String rowKey)             throws IOException {         HTable table = new HTable(conf, tablename);         Get g = new Get(rowKey.getBytes());         Result rs = table.get(g);         for (KeyValue kv : rs.raw()) {             System.out.print(new String(kv.getRow()) + "  ");             System.out.print(new String(kv.getFamily()) + ":");             System.out.print(new String(kv.getQualifier()) + "  ");             System.out.print(kv.getTimestamp() + "  ");             System.out.println(new String(kv.getValue()));         }     }     /**      * 查询表中所有行      * @param tablename      */     public static void scaner(String tablename) {         try {             HTable table = new HTable(conf, tablename);             Scan s = new Scan();             ResultScanner rs = table.getScanner(s);             for (Result r : rs) {                 KeyValue[] kv = r.raw();                 for (int i = 0; i < kv.length; i++) {                     System.out.print(new String(kv[i].getRow()) + "  ");                     System.out.print(new String(kv[i].getFamily()) + ":");                     System.out.print(new String(kv[i].getQualifier()) + "  ");                     System.out.print(kv[i].getTimestamp() + "  ");                     System.out.println(new String(kv[i].getValue()));                 }             }         } catch (IOException e)         {             e.printStackTrace();         }     } }

说明: HBaseConfiguration: 用于告诉client如何连接,连接到哪个HBase的服务器上。 HTable:代表一个HBase表格。 BatchUpdate:用于表格中一行的更新。包括添加某个列,修改某列的值,删除某列等。 commit:table的一个方法。代表某个BatchUpdate操作可以生效了。类似于数据库中的commit操作。

Cell:table中对应某个(行key, 列值,时间戳)下的单元格值。 获取Cell的方法。For example: table.get("myRow", "myColumnFamily:columnQualifier1");

scanner:用于遍历表格。 rowResult:遍历过程当中保存某行信息。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 做全栈攻城狮-安卓开发教程目录

    1.程序员带你学习安卓开发,十天快速入门-安卓学习必要性:http://www.toutiao.com/i6319356348286894594/

    做全栈攻城狮
  • 硬盘逻辑锁解法附加源码分析

    文章发布出来,希望对被不怀好意的人锁住有一定的帮助,同时希望在本站观看过这篇文章的用户不要下载软件编译后对其他用户进行实验或者诈骗,否则一切后果自己承担!!

    周俊辉
  • 英特尔发布 660p 系列 M.2 2280 NVMe SSD 新品

    在三星宣布量产 QLC SATA SSD 之后,英特尔这边也宣布了自家的最新竞品 —— 价格媲美 SATA 型号、但支持 NVMe 协议的 660p 系列 SS...

    Debian社区
  • 程序员带你学习安卓开发系列-Android文件存储

    输入帐号密码,并勾选记住帐号 ,点击登录时,保存帐号信息。下次登陆可以直接显示上次保存的QQ帐号。

    做全栈攻城狮
  • 使用 setfacl 管理文件的访问控制列表ACL

    如果你是在一个大型组织,你运行了 NFS 或者 Samba 服务给不同的用户,你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。Linux...

    Debian社区
  • 基于LVM的磁盘管理

    LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个...

    耕耘实录
  • 简介不同的文件格之Fasta格式

    在浏览核酸蛋白质数据库的时候会经常遇见不同的文件格式,常见的有Fasta格式文件、NBRF/PIR格式文件、 EMBL/SWISSPROT格式文件、Clusta...

    HUBU生信
  • sam文件格式说明

    bowtie2是当前最流行的短序列比对软,SAM(SequenceAlignment/Map)格式是一种通用的比对格式,用来存储reads到参考序列的比对信息S...

    HUBU生信
  • MySQL三种存储引擎总结

    数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中

    ydymz
  • 如何利用公共云存储构建中小企业存储

    内部部署的超融合基础设施对于中小企业来说非常适合,这消除了对SAN存储及其相关技能的需求,但是,对于希望实现存储基础设施现代化的中小企业,有许多方法可以从云存储...

    静一

扫码关注云+社区

领取腾讯云代金券