0

0

Hbase常用操作(增删改查)

php中文网

php中文网

发布时间:2016-06-07 17:34:24

|

1144人浏览过

|

来源于php中文网

原创

运行Eclipse,创建一个新的Java工程ldquo;HBaseClientrdquo;,右键项目根目录,选择 ldquo;Propertiesrdquo;-gt;ldquo;Jav

运行eclipse,创建一个新的java工程“hbaseclient”,右键项目根目录,选择 “properties”->“java build path”->“library”->“add external jars”,将hbase解压后根目录下的hbase-0.94.1-security.jar、hbase-0.94.1-security-tests.jar和lib子目录下所有jar 包添加到本工程的classpath下。

HBase提供了java api来对HBase进行一系列的管理涉及到对表的管理、数据的操作等。常用的API操作有:

1、 对表的创建、删除、显示以及修改等,可以用HBaseAdmin,一旦创建了表,那么可以通过HTable的实例来访问表,每次可以往表里增加数据。

2、 插入数据

创建一个Put对象,在这个Put对象里可以指定要给哪个列增加数据,以及当前的时间戳等值,然后通过调用HTable.put(Put)来提交操作,子猴在这里提请注意的是:在创建Put对象的时候,你必须指定一个行(Row)值,在构造Put对象的时候作为参数传入。

3、 获取数据

要获取数据,,使用Get对象,Get对象同Put对象一样有好几个构造函数,通常在构造的时候传入行值,表示取第几行的数据,通过HTable.get(Get)来调用。

4、 浏览每一行

通过Scan可以对表中的行进行浏览,得到每一行的信息,比如列名,时间戳等,Scan相当于一个游标,通过next()来浏览下一个,通过调用HTable.getScanner(Scan)来返回一个ResultScanner对象。HTable.get(Get)和HTable.getScanner(Scan)都是返回一个Result。Result是一个

KeyValue的链表。

vue.js实现增删改查操作
vue.js实现增删改查操作

vue.js实现增删改查操作

下载

5、 删除

使用Delete来删除记录,通过调用HTable.delete(Delete)来执行删除操作。(注:删除这里有些特别,也就是删除并不是马上将数据从表中删除。)

6、 锁

新增、获取、删除在操作过程中会对所操作的行加一个锁,而浏览却不会。

7、 簇的访问

客户端代码通过ZooKeeper来访问找到簇,也就是说ZooKeeper quorum将被使用,那么相关的类(包)应该在客户端的类(classes)目录下,即客户端一定要找到文件hbase-site.xml。

新建一个类:

    import java.io.IOException;   
    import java.util.ArrayList;   
    import java.util.List;   
         
    import org.apache.Hadoop.conf.Configuration;   
    import org.apache.hadoop.hbase.HBaseConfiguration;   
    import org.apache.hadoop.hbase.HColumnDescriptor;   
    import org.apache.hadoop.hbase.HTableDescriptor;   
    import org.apache.hadoop.hbase.KeyValue;   
    import org.apache.hadoop.hbase.MasterNotRunningException;   
    import org.apache.hadoop.hbase.ZooKeeperConnectionException;   
    import org.apache.hadoop.hbase.client.Delete;   
    import org.apache.hadoop.hbase.client.Get;   
    import org.apache.hadoop.hbase.client.HBaseAdmin;   
    import org.apache.hadoop.hbase.client.HTable;   
    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.client.Put;   
    import org.apache.hadoop.hbase.util.Bytes;   
         
    public class HBaseTest {     
           
        private static Configuration conf =null; 
        /**
          * 初始化配置
        */ 
        static { 
            conf = HBaseConfiguration.create(); 
        } 
         
        /** 
        * 创建一张表 
        */   
        public static void creatTable(String tableName, String[] familys) throws Exception {   
            HBaseAdmin admin = new HBaseAdmin(conf);   
            if (admin.tableExists(tableName)) {   
                System.out.println("table already exists!");   
            } else {   
                HTableDescriptor tableDesc = new HTableDescriptor(tableName);   
                for(int i=0; i                    tableDesc.addFamily(new HColumnDescriptor(familys[i]));   
                }   
                admin.createTable(tableDesc);   
                System.out.println("create table " + tableName + " ok.");   
            }     
        }   
           
        /** 
        * 删除表 
        */   
        public static void deleteTable(String tableName) throws Exception {   
          try {   
              HBaseAdmin admin = new HBaseAdmin(conf);   
              admin.disableTable(tableName);   
              admin.deleteTable(tableName);   
              System.out.println("delete table " + tableName + " ok.");   
          } catch (MasterNotRunningException e) {   
              e.printStackTrace();   
          } catch (ZooKeeperConnectionException e) {   
              e.printStackTrace();   
          }   
        }   
             
        /** 
        * 插入一行记录 
        */   
        public static void addRecord (String tableName, String rowKey, String family, String qualifier, String value)   
                throws Exception{   
            try {   
                HTable table = new HTable(conf, tableName);   
                Put put = new Put(Bytes.toBytes(rowKey));   
                put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));   
                table.put(put);   
                System.out.println("insert recored " + rowKey + " to table " + tableName +" ok.");   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
         
        /** 
        * 删除一行记录 
        */   
        public static void delRecord (String tableName, String rowKey) throws IOException{   
            HTable table = new HTable(conf, tableName);   
            List list = new ArrayList();   
            Delete del = new Delete(rowKey.getBytes());   
            list.add(del);   
            table.delete(list);   
            System.out.println("del recored " + rowKey + " ok.");   
        }   
             
        /** 
        * 查找一行记录 
        */   
        public static void getOneRecord (String tableName, String rowKey) throws IOException{   
            HTable table = new HTable(conf, tableName);   
            Get get = new Get(rowKey.getBytes());   
            Result rs = table.get(get);   
            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()));   
            }   
        }   
             
        /** 
        * 显示所有数据 
        */   
        public static void getAllRecord (String tableName) {   
            try{   
                HTable table = new HTable(conf, tableName);   
                Scan s = new Scan();   
                ResultScanner ss = table.getScanner(s);   
                for(Result r:ss){   
                    for(KeyValue kv : r.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()));   
                    }   
                }   
            } catch (IOException e){   
                e.printStackTrace();   
            }   
        }   
           
        public static void  main (String [] agrs) {   
            try {   
                String tablename = "scores";   
                String[] familys = {"grade", "course"};   
                HBaseTest.creatTable(tablename, familys);   
                     
                //add record zkb   
                HBaseTest.addRecord(tablename,"zkb","grade","","5");   
                HBaseTest.addRecord(tablename,"zkb","course","","90");   
                HBaseTest.addRecord(tablename,"zkb","course","math","97");   
                HBaseTest.addRecord(tablename,"zkb","course","art","87");   
                //add record  baoniu   
                HBaseTest.addRecord(tablename,"baoniu","grade","","4");   
                HBaseTest.addRecord(tablename,"baoniu","course","math","89");   
                     
                System.out.println("===========get one record========");   
                HBaseTest.getOneRecord(tablename, "zkb");   
                     
                System.out.println("===========show all record========");   
                HBaseTest.getAllRecord(tablename);   
                     
                System.out.println("===========del one record========");   
                HBaseTest.delRecord(tablename, "baoniu");   
                HBaseTest.getAllRecord(tablename);   
                     
                System.out.println("===========show all record========");   
                HBaseTest.getAllRecord(tablename);   
            } catch (Exception e) {   
                e.printStackTrace();   
            }   
        }   
    }   

结果显示为:

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

【李炎恢】ThinkPHP8.x 后端框架课程
【李炎恢】ThinkPHP8.x 后端框架课程

共50课时 | 4.4万人学习

PHP+MySQL基础入门课程
PHP+MySQL基础入门课程

共113课时 | 7.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号