Hbase API使用总结

举个例子:

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使用总结_第1张图片

很大程度上,对于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

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

                                for(int j=0;j

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

                                }

                       }

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

                                for(int j=0;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());

             }

    }

 

你可能感兴趣的:(大数据,hbase,API)