首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hbase API开发实例(Java版)

Hbase API开发实例(Java版)

作者头像
数据饕餮
发布2019-01-14 10:50:25
1.1K0
发布2019-01-14 10:50:25
举报
文章被收录于专栏:数据饕餮数据饕餮

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:遍历过程当中保存某行信息。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012年02月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档