首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

Hbase根本API的使用

2013-09-26 
Hbase基本API的使用package testimport java.util.Mapimport org.apache.hadoop.conf.Configurationimp

Hbase基本API的使用
package test;import java.util.Map;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.client.HBaseAdmin;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;public class HbaseDemo { //HBase是基于Hadoop的开源数据库,他以Google的BigTable为原型实现的 //Region服务器 //HBase在行的方向上将表分成多个Region,每个Region包含一定范围内的数据。随着表中的数据不断的增加 //一个Region会被分成多个新的Region //Region是HBase中分布式存储和负载均衡的最小单位,即一个表所有的Region会被分到多个Region服务器上 //每个Region由一个或多个Store组成,每个Store保存一个列族的所有的数据, //每个Store由一个或多个memStore组成 //主服务器 //HBase每个时刻只有一个HMaster(主服务器程序)在运行HMaster将Region分配给Region服务器 public static void main(String[] args) throws Exception{ Configuration conf = HBaseConfiguration.create(); //初始化HBase的配置文件 conf.set("hbase.zookeeper.quorum", "UbubtuSlave1,UbuntuSlave2,UbuntuSlave3");//指定HBase使用的Zookeeper的地址 HBaseAdmin admin = new HBaseAdmin(conf);//实例化HBaseAdmin(该类用于对表的元数据进行操作并提供了基本的管理操作) HTableDescriptor tableDescriptor = new HTableDescriptor("tab1".getBytes()); tableDescriptor.addFamily(new HColumnDescriptor("fam1")); admin.createTable(tableDescriptor);//创建一张新表,参数为类HTableDescriptor,其中是对表名和相关的列族的描述 HTable table = new HTable(conf,"tab1"); //可对表进行相关操作的类 Put putRow1 = new Put("row1".getBytes());//可以向表中插入数据,初始化时可以传递一个行键,表示向那一行插入数据 putRow1.add("fam1".getBytes(), "coll".getBytes(),"vall".getBytes());//插入数据 table.put(putRow1); System.out.println("add row2"); Put putRow2 = new Put("row2".getBytes()); putRow2.add("fam1".getBytes(), "col2".getBytes(), "val2".getBytes()); putRow2.add("fam1".getBytes(), "col3".getBytes(), "val3".getBytes()); table.put(putRow2); for(Result row:table.getScanner("fam1".getBytes()))//table.getScanner获得某一列族的所有数据,方法返回Result类 { System.out.format("ROW\t%s\n", new String(row.getRow())); for(Map.Entry<byte[],byte[]> entry :row.getFamilyMap("fam1".getBytes()).entrySet()) { //Result.getFamilyMap()可以获得以列名为key值为value的映射表 String column = new String(entry.getKey()); String value = new String(entry.getValue()); System.out.format("COLUMN\tfam1:%s\t%s\n", column,value); } } admin.disableTable("tab1");//删除表tab1 admin.deleteTable("tab1");//删除表tab1 }}

?

热点排行