您现在的位置 >> Hadoop教程 >> Hadoop实战 >> hbase专题  
 

Hbase与eclipse集成的第一个例子

【作者:Hadoop实战专家】【关键词:Hbase 删除 操作 数据 】 【点击:60548次】【2013-09-2】
创建一个Put对象,在这个Put对象里可以指定要给哪个列增加数据,以及当前的时间戳等值,然后通过调用HTable.put(Put)来提交操作,子猴在这里提请注意的是:在创建Put对象的时候,你必须指定一个行(Row)值,在构造Put对象的时候作为参数传入。del recored baoniu ok.  

相关热门搜索:

大数据标签:hadoop hdfs hbase zookeeper bigdata

问题导读:
1、怎样在Eclipse中操作Hbase ?
2、HBase提供了什么来对HBase进行一系列的管?
3、Hbase常用的API操作有哪些 ?

1、运行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下。
2.  按照步骤1中的操作,将自己所连接的HBase的配置文件hbase-site.xml添加到本工程的Classpath中,如下所示为配置文件的一个示例:

1. 

2. 

3.     hbase.rootdir

4.     hdfs://localhost:9000/hbase

5.   

6. 

复制代码

网上还有这一步,但我没执行这一步,结果也正确显示出来了。

  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的链表。

  5、 删除

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

  6、 锁

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

  7、 簇的访问

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

新建一个类:

1. import java.io.IOException;

2. import java.util.ArrayList;

3. import java.util.List;

4.

5. import org.apache.hadoop.conf.Configuration;

6. import org.apache.hadoop.hbase.HBaseConfiguration;

7. import org.apache.hadoop.hbase.HColumnDescriptor;

8. import org.apache.hadoop.hbase.HTableDescriptor;

9. import org.apache.hadoop.hbase.KeyValue;

10. import org.apache.hadoop.hbase.MasterNotRunningException;

11. import org.apache.hadoop.hbase.ZooKeeperConnectionException;

12. import org.apache.hadoop.hbase.client.Delete;

13. import org.apache.hadoop.hbase.client.Get;

14. import org.apache.hadoop.hbase.client.HBaseAdmin;

15. import org.apache.hadoop.hbase.client.HTable;

16. import org.apache.hadoop.hbase.client.Result;

17. import org.apache.hadoop.hbase.client.ResultScanner;

18. import org.apache.hadoop.hbase.client.Scan;

19. import org.apache.hadoop.hbase.client.Put;

20. import org.apache.hadoop.hbase.util.Bytes;

21.

22. public class HBaseTest {

23.

24.     private static Configuration conf =null;

25.      /**

26.       * 初始化配置

27.      */

28.      static {

29.          conf = HBaseConfiguration.create();

30.      }

31.

32.     /**

33.      * 创建一张表

34.      */

35.     public static void creatTable(String tableName, String[] familys) throws Exception {

36.         HBaseAdmin admin = new HBaseAdmin(conf);

37.         if (admin.tableExists(tableName)) {

38.             System.out.println("table already exists!");

39.         } else {

40.             HTableDescriptor tableDesc = new HTableDescriptor(tableName);

41.             for(int i=0; irowKey, String family, String qualifier, String value)

69.             throws Exception{

70.         try {

71.             HTable table = new HTable(conf, tableName);

72.             Put put = new Put(Bytes.toBytes(rowKey));

73.             put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));

74.             table.put(put);

75.             System.out.println("insert recored " + rowKey + " to table " + tableName +" ok.");

76.         } catch (IOException e) {

77.             e.printStackTrace();

78.         }

79.     }

80.

81.     /**

82.      * 删除一行记录

83.      */

84.     public static void delRecord (String tableName, String rowKey) throws IOException{

85.         HTable table = new HTable(conf, tableName);

86.         List list = new ArrayList();

87.         Delete del = new Delete(rowKey.getBytes());

88.         list.add(del);

89.         table.delete(list);

90.         System.out.println("del recored " + rowKey + " ok.");

91.     }

92.

93.     /**

94.      * 查找一行记录

95.      */

96.     public static void getOneRecord (String tableName, String rowKey) throws IOException{

97.         HTable table = new HTable(conf, tableName);

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

99.         Result rs = table.get(get);

100.         for(KeyValue kv : rs.raw()){

101.             System.out.print(new String(kv.getRow()) + " " );

102.             System.out.print(new String(kv.getFamily()) + ":" );

103.             System.out.print(new String(kv.getQualifier()) + " " );

104.             System.out.print(kv.getTimestamp() + " " );

105.             System.out.println(new String(kv.getValue()));

106.         }

107.     }

108.

109.     /**

110.      * 显示所有数据

111.      */

112.     public static void getAllRecord (String tableName) {

113.         try{

114.              HTable table = new HTable(conf, tableName);

115.              Scan s = new Scan();

116.              ResultScanner ss = table.getScanner(s);

117.              for(Result r:ss){

118.                  for(KeyValue kv : r.raw()){

119.                     System.out.print(new String(kv.getRow()) + " ");

120.                     System.out.print(new String(kv.getFamily()) + ":");

121.                     System.out.print(new String(kv.getQualifier()) + " ");

122.                     System.out.print(kv.getTimestamp() + " ");

123.                     System.out.println(new String(kv.getValue()));

124.                  }

125.              }

126.         } catch (IOException e){

127.             e.printStackTrace();

128.         }

129.     }

130.

131.     public static void  main (String [] agrs) {

132.         try {

133.             String tablename = "scores";

134.             String[] familys = {"grade", "course"};

135.             HBaseTest.creatTable(tablename, familys);

136.

137.             //add record zkb

138.             HBaseTest.addRecord(tablename,"zkb","grade","","5");

139.             HBaseTest.addRecord(tablename,"zkb","course","","90");

140.             HBaseTest.addRecord(tablename,"zkb","course","math","97");

141.             HBaseTest.addRecord(tablename,"zkb","course","art","87");

142.             //add record  baoniu

143.             HBaseTest.addRecord(tablename,"baoniu","grade","","4");

144.             HBaseTest.addRecord(tablename,"baoniu","course","math","89");

145.

146.             System.out.println("===========get one record========");

147.             HBaseTest.getOneRecord(tablename, "zkb");

148.

149.             System.out.println("===========show all record========");

150.             HBaseTest.getAllRecord(tablename);

151.

152.             System.out.println("===========del one record========");

153.             HBaseTest.delRecord(tablename, "baoniu");

154.             HBaseTest.getAllRecord(tablename);

155.

156.             System.out.println("===========show all record========");

157.             HBaseTest.getAllRecord(tablename);

158.         } catch (Exception e) {

159.             e.printStackTrace();

160.         }

161.     }

162. }

复制代码

3. 结果显示为:

create table scores ok.
insert recored zkb to table scores ok.
insert recored zkb to table scores ok.
insert recored zkb to table scores ok.
insert recored zkb to table scores ok.
insert recored baoniu to table scores ok.
insert recored baoniu to table scores ok.
===========get one record========
zkb course: 1345450733304 90
zkb course:art 1345450733323 87
zkb course:math 1345450733316 97
zkb grade: 1345450733294 5
===========show all record========
baoniu course:math 1345450733333 89
baoniu grade: 1345450733328 4
zkb course: 1345450733304 90
zkb course:art 1345450733323 87
zkb course:math 1345450733316 97
zkb grade: 1345450733294 5
===========del one record========
del recored baoniu ok.
zkb course: 1345450733304 90
zkb course:art 1345450733323 87
zkb course:math 1345450733316 97
zkb grade: 1345450733294 5
===========show all record========
zkb course: 1345450733304 90
zkb course:art 1345450733323 87
zkb course:math 1345450733316 97
zkb grade: 1345450733294 5

大数据系列hbase相关文章:

最新评论
寻觅2014-09-09 08:47:11
共享下吧 。。。省得再去找了
脱缰的野马_20132014-09-09 07:30:52
[图片]
Leejiunyeh2014-09-08 02:24:15
【记录碰到的HBase问题】目前NoSQL产品最被人诟病的就是其稳定性,不得不承认,目前HBase离做到数据库那样的高稳定还有距离(丢数据、不能读写、DDL失败等严重问题),这篇blog将用来记录我们在运维HBase时碰到的问题(会不断更新),希望能给使 (分享自 @IT技术博客大学习) http://t.cn/8sbVKnR
Ryan_Fang2014-09-07 08:25:23
【历数大数据领域内的十大开源技术、十大公司】 十大开源技术: Apache HBase 这个大数据管理平台建立在谷歌强大的BigTable管理引擎基础上。作为具有开源、Java编码、分布式多个优势的数据库,Hbase最初被设计应用于Hadoop平台,而这一强大的数据管理工具,也被Faceboo… http://t.cn/8sQhyTv
小城相恋2014-09-07 03:59:49
噢噢噢噢 明白了 是分隔符 。。。
SparkInChina2014-09-06 08:19:22
哎,是啊,各种问题。。。
周诺想2014-09-06 04:29:41
不要设置成这个
郭建012014-09-06 07:16:54
San Jose的Hadoop的供应商MapR Technologies获8000万美元新轮融资,领投为Google Capital和Qualcomm Ventures,之前投资者Lightspeed Venture, Mayfield Fund, NEA和Redpoint参投。MAPR同时向硅谷银行筹3000万美元债务融资。MAPR是企业级大数据平台,用于金融服务,零售,传媒,医保和政府,准备IPO。
追风2014-09-05 09:54:31
【大数据处理:13个让Hadoop大象飞起来的开源工具】Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo! Doug Cutting根据Google发布的学术论文研究而来。用户可以在不了解分布式底层细节的情况下,轻松地在Hadoop上开发和运行处理海… http://t.cn/8FvRywn
~木~2014-09-04 04:33:41
【新书推荐 Apache Mahout Cookbook 】互联网和社交网络的发展,需要对百亿行数据进行分析,这就促成了对这种分析软件的需求。为了满足这种需求,Apache Hadoop应运而生,而mahout就是在这样大的数据上做数据挖掘算法的工具。这本书收集了多个实用案例, 更多信息请见 http://t.cn/8F1m7ll
 
  • Hadoop生态系统资料推荐