/**
 * 功能:测试Hbase基本的增删改查操作
 * Created by liuhuichao on 2016/12/5.
 */
public class HbaseCRUDTest {
    public static Configuration configuration;

    static{
        configuration= HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum","lhc-centos");
    }

    /**
     * 测试创建student表:测试已通过
     * @throws IOException
     */
    @Test
    public void createTable() throws IOException {
        HBaseAdmin admin=new HBaseAdmin(configuration); //HBaseAdmin负责管理HBase集群,添加和丢弃表
        if(admin.tableExists("studentInfo")){
            System.out.println("student表已经存在");
            return;
        }
        HTableDescriptor descriptor=new HTableDescriptor("studentInfo");
        descriptor.addFamily(new HColumnDescriptor("Name"));//创建列族,名字是Name
        descriptor.addFamily(new HColumnDescriptor("Address"));//创建列族,名字是Address
        admin.createTable(descriptor); //创建表
        System.out.println("student表创建成功!!!");
    }

    /**
     * 功能:想hbase中插入一行记录 --测试已通过
     * @throws IOException
     */
    @Test
    public void insertHbaseStudentTable() throws IOException {
        HTable table=new HTable(configuration, Bytes.toBytes("studentInfo"));
        Put put=new Put(Bytes.toBytes("1"));
        put.addColumn(Bytes.toBytes("Name"),Bytes.toBytes("firstName"),Bytes.toBytes("liu"));
        put.addColumn(Bytes.toBytes("Name"),Bytes.toBytes("secondName"),Bytes.toBytes("huichao"));
        put.addColumn(Bytes.toBytes("Address"),Bytes.toBytes("province"),Bytes.toBytes("hebei"));
        put.addColumn(Bytes.toBytes("Address"),Bytes.toBytes("city"),Bytes.toBytes("baoding"));
        put.addColumn(Bytes.toBytes("Address"),Bytes.toBytes("area"),Bytes.toBytes("qingyuan"));
        table.put(put);
    }

    /**
     * 功能:根据行健获取数据
     * @throws IOException
     */
    @Test
    public void getDataByRowKey() throws IOException {
        HTable table=new HTable(configuration, Bytes.toBytes("studentInfo"));
        Get get=new Get(Bytes.toBytes("1"));
        Result result=table.get(get);
        for(KeyValue kv :result.list()){
            System.out.println("family:"+Bytes.toString(kv.getFamilyArray()));//所属列族名称
            System.out.println("qualifier:"+Bytes.toString(kv.getQualifier()));//列名称
            System.out.println("value:"+Bytes.toString(kv.getValue()));//存储的值
            System.out.println("Timestamp:"+kv.getTimestamp());//获取时间戳
        }
    }

    /**
     * 功能:测试全表扫描
     * @throws IOException
     */
    @Test
    public void selectHBaseScan() throws IOException {
        HTable table=new HTable(configuration, Bytes.toBytes("studentInfo"));
        /*遍历查询*/
        Scan scan=new Scan();
        ResultScanner rs=null;
        try {
            rs=table.getScanner(scan);
            for(Result result : rs){
                for(KeyValue kv : result.list()){
                    System.out.println("family:"+Bytes.toString(kv.getFamilyArray()));//所属列族名称
                    System.out.println("qualifier:"+Bytes.toString(kv.getQualifier()));//列名称
                    System.out.println("value:"+Bytes.toString(kv.getValue()));//存储的值
                    System.out.println("Timestamp:"+kv.getTimestamp());//获取时间戳
                }
            }
        }finally {
            rs.close();
        }
    }

    /**
     * 更新
     * @throws Exception
     */
    @Test
    public void updateHBase() throws  Exception{
        HTable table=new HTable(configuration,Bytes.toBytes("studentInfo"));
        Put put=new Put(Bytes.toBytes("1")); //设置行健
        put.add(Bytes.toBytes("Address"),Bytes.toBytes("city"),Bytes.toBytes("beijing"));///更新的时候找对族名和列名,再给定新的value值就可以了
        table.put(put);
    }

    /**
     * 功能:查询nickname的多个(本示例为2个)版本值.
     * @throws Exception
     */
    @Test
    public void selectSomeVersion() throws  Exception{
        HTable table=new HTable(configuration,Bytes.toBytes("studentInfo"));
        Get get=new Get(Bytes.toBytes("1"));
        get.addColumn(Bytes.toBytes("Address"),Bytes.toBytes("city"));
       // get.setMaxVersions(3);
        List<KeyValue> results=table.get(get).list();
        int total=results.size();
        System.out.println("Address列族中city列的各个版本值");
        for(int i=0;i<total;i++){
            System.out.println(Bytes.toString(results.get(i).getValue()));
        }
    }

    /**
     * 功能:删除指定的某一行
     * @throws Exception
     */
    @Test
    public void deleteColumn() throws  Exception{
        HTable table = new HTable(configuration, Bytes.toBytes("studentInfo"));//HTabel负责跟记录相关的操作如增删改查等
        Delete deleteAll = new Delete(Bytes.toBytes("1"));
        table.delete(deleteAll);
    }

    /**
     * 功能:删除表
     * @throws Exception
     */
    @Test
    public void deleteTable() throws Exception{
        HBaseAdmin admin=new HBaseAdmin(configuration); //HBaseAdmin负责管理HBase集群,添加和丢弃表
        admin.disableTable("student");
        admin.deleteTable("student");
    }

}

使用Java Api 对HBase进行简单操作的更多相关文章

  1. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

  2. 通过Java Api与HBase交互(转)

    HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要,本文将继续前两篇文章中blog表的示例,介绍常用的Api. import java.io.IO ...

  3. Java使用poi对Execl简单操作_总结

    poi是Apache组织给开发者提供一套操作office(Execl,Word,PowerPoint)等Java API,开发者通过Poi API可以快速的操作office办公软件,以上3篇博文只是一 ...

  4. HBase总结(十二)Java API 与HBase交互实例

    HBase提供了Java Api的訪问接口,掌握这个就跟Java应用使用RDBMS时须要JDBC一样重要 import java.io.IOException; import org.apache.h ...

  5. 通过Java Api与HBase交互

    HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要,本文将继续前两篇文章中blog表的示例,介绍常用的Api. import java.io.IO ...

  6. JAVA API访问Hbase org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=32

    Java使用API访问Hbase报错: 我的hbase主节点是spark1   java代码访问hbase的时候写的是ip 结果运行程序报错 不能够识别主机名 修改主机名     修改主机hosts文 ...

  7. 使用JAVA API编程实现简易Habse操作

    使用JAVA API编程实现下面内容: 1.创建<王者荣耀>游戏玩家信息表gamer,包含列族personalInfo(个人信息).recordInfo(战绩信息).assetsInfo( ...

  8. Java Api与HBase交互实例

    import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hb ...

  9. Java中对session的简单操作

    1.jsp中操作session <% String name=(String)request.getSession().getAttribute("username"); / ...

随机推荐

  1. UVA 10617 Again Palindrome 区间DP

    题目链接: https://cn.vjudge.net/problem/UVA-10617 题目大意: 问有几种删除字符的方法可以使得该字符串为回文. 解题思路: 删除字符得到回文串的方法数 等于 字 ...

  2. 「bzoj 4184: shallot」

    权限题 线段树分治加线性基 首先这个题要求删除线性基肯定是没法处理的 于是我们套上一个线段树分治 线段树分治就是一种能够避免删除的神仙操作 我们发现询问是对一个时间的单点询问,而每一个数存在的时间却是 ...

  3. MyBatis(2)-全局配置文件

    本文的代码是在MyBatis(1)-简单入门基础之上进行学习的,如有不懂请先看此博文MyBatis(1)-简单入门! 1)配置文件的安装 --->在联网的情况下,点击去下载http://myba ...

  4. [转]DbHelper通用数据库访问帮助类

    之前我一直都是在博客园中查看各位高手的博文,确实学到了不少知识,不过比较少写博客,现在就把我自己在项目实施过程中使用到比较好的技术框架写出来,希望能让更多的人了解和学习. 通常我们在开发使用数据库访问 ...

  5. UESTC - 1987 童心未泯的帆宝和乐爷 (第k短路 A*算法+SPFA算法 模板)

    传送门: http://www.qscoj.cn/#/problem/show/1987 童心未泯的帆宝和乐爷 Edit Time Limit: 10000 MS     Memory Limit: ...

  6. 升级MAC OS到10.13, 10.14系统后UNITY工程无法加载资源的解决办法

    升级MAC OS到10.13, 10.14系统后,出现UNITY工程无法加载资源的情况: Unity项目中Asset目录显示为空! 解决办法一: 打开Launchpad中的磁盘工具 (也就是实用工具下 ...

  7. iOS 封装一个带复制功能的UILabel

    我们发现UILabel不在为我们提供长按弹出复制等操作了, 我们来继承UILabel自己写一个带复制功能的UILabel. 代码: #import "CopyLabel.h" @i ...

  8. opacity(透明度)属性设置

    1.opacity:是属性,整个元素包含子元素全部都会透明,取值范围0-1; 2.background-color:rgba(0,0,0,.5)rgba是值,用于背景,取值范围0-1. 补充:a-al ...

  9. Delphi开发Android的几个注意

    Delphi在Android开发中还不是很完善,也有一些修改,需要注意: 1.不要用IXMLDocument的SaveToStream, XML.Text等,用了OXML,QXML,VerySimpl ...

  10. HTML学习笔记--元素

    1. 开始标签称为起始标签,结束标签称为闭合标签 openging tag closing tag HTML 元素以开始标签起始 HTML 元素以结束标签终止 元素的内容是开始标签与结束标签之间的内容 ...