Hbase API使用总结

来源:互联网 发布:淘宝店铺被扣48分 编辑:程序博客网 时间:2024/06/05 17:20

举个例子:

Hbase的java的API接口相对比较简单,举个创建表的例子来看:

public class HbaseApiTest {

         staticConfiguration conf = null;

         static{

       conf = HBaseConfiguration.create();

       conf.set("hbase.zookeeper.quorum","132.121.127.33");

       conf.set("hbase.zookeeper.property.clientPort","2181");

    }

        

        

         /*

    * 创建表

    *

    * @tableName 表名

    *

    * @family 列族列表

    */

   public static void creatTable(String tableName, String[] family)

           throws Exception {

//         Connection connection =ConnectionFactory.createConnection(conf);

//         HBaseAdmin admin =(HBaseAdmin) connection.getAdmin();

             HBaseAdmin admin = newHBaseAdmin(conf);

       HTableDescriptor desc = new HTableDescriptor(tableName);

       for (int i = 0; i < family.length; i++) {

           desc.addFamily(new HColumnDescriptor(family[i]));

       }

       if (admin.tableExists(tableName)) {

           System.out.println("table Exists!");

           System.exit(0);

       } else {

           admin.createTable(desc);

           System.out.println("create table Success!");

       }

    }

 

         /**

         *

         *@author : zhengrf1

         *@date 创建时间:2017年10月25日下午4:39:07

         */

         publicstatic void main(String[] args) {

                   //TODO Auto-generated method stub

                   String[]family = {"column1","column2"};

                   try{

                            creatTable("table1",family);

                   }catch (Exception e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

         }

 

}

 

--可见hbase主要是创建HBaseConfiguration对象,并且填充hbase所用的zookeeper的ip和端口,然后创建HBaseAdmin对象,HBaseAdmin作为元数据管理者,创建HTableDescriptor对象,HTableDescriptor作为表结构描述对象,往这个对象中填充表结构下面列族的相关信息,最后HBaseAdmin调用createTable(HTableDescriptor des),在hbase中创建表。可见HBaseAdmin内部持有了对hbase数据库的连接(并且应该是new HBaseAdmin(conf))的时候创建。

 

 

Hbase的API中相关的类和逻辑数据结构的对应关系


很大程度上,对于hbase的API操作就是围绕上面的几个类展开,关于这些类的更具体介绍可以参考博文:http://www.cnblogs.com/liuwei6/p/6842536.html

 

 

Hbase应用API进行读写操作的例子

1.往指定的表中对相关列族进行数据写操作

public static void addData(String rowKey,String tableName, String columnFamily1, String columnFamily2,

           String[] column1, String[] value1, String[] column2, String[] value2)throwsException {

             HTable table = new HTable(conf,tableName);

             Put put = new Put(rowKey.getBytes());

             HColumnDescriptor[] columnDescriptors =table.getTableDescriptor().getColumnFamilies();

             for(int i=0;i<columnDescriptors.length; i++){

                       if(columnDescriptors[i].getNameAsString().equals(columnFamily1)){

                                for(int j=0;j<column1.length; j++){

                                         put.add(columnFamily1.getBytes(),column1[j].getBytes(), value1[j].getBytes());

                                }

                       }

                       if(columnDescriptors[i].getNameAsString().equals(columnFamily2)){

                                for(int j=0;j<column2.length; j++){

                                         put.add(columnFamily2.getBytes(),column2[j].getBytes(), value2[j].getBytes());

                                }

                       }

             }

             table.put(put);

             System.out.println("add dataSuccess!");

}

 

2.对指定的表中对相关列族下面的字段进行数据读操作

public static void getResultByColumn(StringtableName, String rowKey,

           String familyName, String columnName) throws IOException {

             HTable table = new HTable(conf,tableName);

             Get get = new Get(rowKey.getBytes());

             get.addColumn(familyName.getBytes(),columnName.getBytes());

             Result result = table.get(get);

             for(KeyValue kv : result.list()){

                       System.out.println("family:"+new String(kv.getFamily()));

                       System.out.println("qualifier:"+new String(kv.getQualifier()));

                       System.out.println("value:"+new String(kv.getValue()));

                       System.out.println("Timestamp:"+kv.getTimestamp());

             }

    }

 

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 9个月孩子不好好吃奶怎么办 孩子2个月吃奶老是呛到怎么办 孩子4个月不好好吃奶怎么办? 3个月的孩子不吃奶肚子胀怎么办 刚出生的婴儿吃完奶打嗝怎么办 宝宝刚生下来一直睡觉不吃奶怎么办 刚生下来的婴儿不吃奶怎么办 刚生下来的小猫不吃奶怎么办 刚生的小羊羔不吃奶怎么办 刚出生的婴儿不会吸奶怎么办 生完小孩七十天妈妈咳嗽怎么办 带欣的名字三个字儿的怎么办 二十多岁的儿子沉迷游戏网络怎么办 为什么打开游戏网络却用不了怎么办 打来微信网页版显示证书错误怎么办 开了家定制家具店生意不好怎么办 宝宝起风疹怎么办要注意的问题 超市买的内裤西铁牌子没去掉怎么办 没申请生产许可证贴标了怎么办 淘宝没有品牌非要我写品牌怎么办没 意外怀孕明明一直用安全套的怎么办 找不到百度网盘的dns地址怎么办 小米众筹到了发货时间不发货怎么办 不知道电脑宽带连接账号密码怎么办 电脑如果宽带账号密码忘记了怎么办 xp电脑用户名和密码忘了怎么办 电脑的用户名和密码忘记了怎么办 电脑重置后需要用户名和密码怎么办 电脑登录用户名和密码忘记了怎么办 电脑登录用户名和密码忘了怎么办啊 微信无意中点了允许登录怎么办 qq号码登录微信无法验证怎么办 注册微信公众号邮箱激活不了怎么办 不是自己申请的qq号忘密码怎么办 联通宽带拨号账号密码忘记了怎么办 忘了路由器的用户名和密码怎么办 宽带连接用户名和密码忘了怎么办 江西银行网银用户名忘记了怎么办 江西银行网银密码忘了怎么办 广发信用卡网银密码忘了怎么办 刚注册的淘宝账号买不了东西怎么办