分享

hbase编程:通过Java api操作hbase

1.hbase开发需要添加那些包?
2.如何通过Java api获取获取表的列族的名称?

开发环境:
hadoop: hadoop-1.1.2
hbase: hbase-0.94.11-security
eclipse:Juno Service Release 2

配置Eclipse

通过 Eclipse 创建一个新 Java 工程,右击项目根目录,选择“Properties> Java Build Path> Library>  Add  External  JARs”,将 HBase 安装文件解压后根目录下的hbase-0.94.11-security.jar、hbase-0.94.11-security-tests.jar 和 lib 子目录下所有的 jar 包添加到本工程的 Build Path下。
示例使用表users及表的基本操作:

创建表
  1. >create 'users','user_id','address','info'
复制代码
添加记录
  1. put 'users','xiaoming','info:age','24';
  2. put 'users','xiaoming','info:birthday','1987-06-17';
  3. put 'users','xiaoming','info:company','alibaba';
  4. put 'users','xiaoming','address:contry','china';
  5. put 'users','xiaoming','address:province','zhejiang';
  6. put 'users','xiaoming','address:city','hangzhou';
  7. put 'users','zhangyifei','info:birthday','1987-4-17';
  8. put 'users','zhangyifei','info:favorite','movie';
  9. put 'users','zhangyifei','info:company','alibaba';
  10. put 'users','zhangyifei','address:contry','china';
  11. put 'users','zhangyifei','address:province','guangdong';
  12. put 'users','zhangyifei','address:city','jieyang';
  13. put 'users','zhangyifei','address:town','xianqiao'
复制代码
注意:最后一个语句没有分号,此时,按回车后将添加数据到表'users'中。

获取一条记录

1.取得一个id的所有数据
  1. >get 'users','xiaoming'
复制代码
2.获取一个id,一个列族的所有数据
  1. >get 'users','xiaoming','info'
复制代码
3.获取一个id,一个列族中一个列的所有数据
  1. >get 'users','xiaoming','info:age'
复制代码
更新记录
  1. >put 'users','xiaoming','info:age' ,'29'
  2. >get 'users','xiaoming','info:age'
  3. >put 'users','xiaoming','info:age' ,'30'
  4. >get 'users','xiaoming','info:age'
复制代码
获取单元格数据的版本数据
  1. >get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>1}
  2. >get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>2}
  3. >get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>3}
复制代码
获取单元格数据的某个版本数据
  1. 〉get 'users','xiaoming',{COLUMN=>'info:age',TIMESTAMP=>1364874937056}
复制代码
删除xiaoming值的'info:age'字段
  1. >delete 'users','xiaoming','info:age'
  2. >get 'users','xiaoming'
复制代码
删除整行
  1. >deleteall 'users','xiaoming'
复制代码
统计表的行数
  1. >truncate 'users'
复制代码
清空表
  1. >truncate 'users'
复制代码
全表扫描
  1. >scan 'users'
复制代码
输出结果:
  1. hbase(main):022:0> scan 'users'
  2. ROW                                          COLUMN+CELL                                                                                                                    
  3. xiaoming                                    column=address:city, timestamp=1378733106132, value=hangzhou                                                                  
  4. xiaoming                                    column=address:contry, timestamp=1378733106058, value=china                                                                    
  5. xiaoming                                    column=address:province, timestamp=1378733106120, value=zhejiang                                                               
  6. xiaoming                                    column=info:age, timestamp=1378733105943, value=24                                                                             
  7. xiaoming                                    column=info:birthday, timestamp=1378733105961, value=1987-06-17                                                               
  8. xiaoming                                    column=info:company, timestamp=1378733106006, value=alibaba                                                                    
  9. zhangyifei                                  column=address:city, timestamp=1378733106184, value=jieyang                                                                    
  10. zhangyifei                                  column=address:contry, timestamp=1378733106176, value=china                                                                    
  11. zhangyifei                                  column=address:province, timestamp=1378733106180, value=guangdong                                                              
  12. zhangyifei                                  column=address:town, timestamp=1378733106189, value=xianqiao                                                                  
  13. zhangyifei                                  column=info:birthday, timestamp=1378733106161, value=1987-4-17                                                                 
  14. zhangyifei                                  column=info:company, timestamp=1378733106171, value=alibaba                                                                    
  15. zhangyifei                                  column=info:favorite, timestamp=1378733106167, value=movie                                                                     
  16. 2 row(s) in 0.1900 seconds
复制代码
示例一:输出表“users”的列族名称
代码:
  1. import java.io.IOException;
  2. import org.apache.hadoop.conf.Configuration;
  3. import org.apache.hadoop.hbase.HBaseConfiguration;
  4. import org.apache.hadoop.hbase.HColumnDescriptor;
  5. import org.apache.hadoop.hbase.HTableDescriptor;
  6. import org.apache.hadoop.hbase.client.HBaseAdmin;
  7. import org.apache.hadoop.hbase.util.Bytes;
  8. public class ExampleClient {
  9.         public static void main(String[] args) throws IOException {
  10.                
  11.                   Configuration conf = HBaseConfiguration.create();
  12.                   conf.set("hbase.zookeeper.quorum", "master");//使用eclipse时必须添加这个,否则无法定位
  13.                   conf.set("hbase.zookeeper.property.clientPort", "2181");
  14.                   HBaseAdmin admin = new HBaseAdmin(conf);// 新建一个数据库管理员
  15.                   HTableDescriptor tableDescriptor = admin.getTableDescriptor(Bytes.toBytes("users"));
  16.                   byte[] name = tableDescriptor.getName();
  17.                   System.out.println("result:");
  18.                   System.out.println("table name: "+ new String(name));
  19.                   HColumnDescriptor[] columnFamilies = tableDescriptor
  20.                                   .getColumnFamilies();
  21.                   for(HColumnDescriptor d : columnFamilies){
  22.                           System.out.println("column Families: "+ d.getNameAsString());
  23.                           }
  24.             }
  25. }
复制代码
编译结果:
  1. 2013-09-09 15:58:51,890 WARN  conf.Configuration (Configuration.java:<clinit>(195)) - DEPRECATED: hadoop-site.xml found in the classpath. Usage of hadoop-site.xml is deprecated. Instead use core-site.xml, mapred-site.xml and hdfs-site.xml to override properties of core-default.xml, mapred-default.xml and hdfs-default.xml respectively
  2. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT
  3. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:host.name=w253245.ppp.asahi-net.or.jp
  4. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:java.version=1.6.0_10-rc2
  5. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:java.vendor=Sun Microsystems Inc.
  6. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:java.home=C:\Java\jre6
  7. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:java.class.path=...............//太占篇幅此处省略
  8. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:java.library.path=D:\workspace\Eclipse-jee\hadoop-1.1.21\lib\native;D:\workspace\Eclipse-jee\hadoop-1.1.21\lib\native
  9. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:java.io.tmpdir=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\
  10. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:java.compiler=<NA>
  11. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:os.name=Windows XP
  12. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:os.arch=x86
  13. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:os.version=5.1
  14. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:user.name=hadoop
  15. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:user.home=C:\Documents and Settings\Administrator
  16. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (Environment.java:logEnv(100)) - Client environment:user.dir=D:\workspace\Eclipse-jee\Hadoop_APPs_U_tht
  17. 2013-09-09 15:58:55,031 INFO  zookeeper.ZooKeeper (ZooKeeper.java:<init>(438)) - Initiating client connection, connectString=master:2181 sessionTimeout=180000 watcher=hconnection
  18. 2013-09-09 15:58:56,171 INFO  zookeeper.RecoverableZooKeeper (RecoverableZooKeeper.java:<init>(104)) - The identifier of this process is 6032@tht
  19. 2013-09-09 15:58:56,234 INFO  zookeeper.ClientCnxn (ClientCnxn.java:logStartConnect(966)) - Opening socket connection to server master/121.1.253.251:2181. Will not attempt to authenticate using SASL (无法定位登录配置)
  20. 2013-09-09 15:58:56,296 INFO  zookeeper.ClientCnxn (ClientCnxn.java:primeConnection(849)) - Socket connection established to master/121.1.253.251:2181, initiating session
  21. 2013-09-09 15:58:56,484 INFO  zookeeper.ClientCnxn (ClientCnxn.java:onConnected(1207)) - Session establishment complete on server master/121.1.253.251:2181, sessionid = 0x141011ad7db000e, negotiated timeout = 180000
  22. result:
  23. table name: users
  24. column Families: address
  25. column Families: info
  26. column Families: user_id
复制代码
示例二:使用HBase  Java  API对表users2进行操作:
代码:
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.hbase.HBaseConfiguration;
  5. import org.apache.hadoop.hbase.HColumnDescriptor;
  6. import org.apache.hadoop.hbase.HTableDescriptor;
  7. import org.apache.hadoop.hbase.KeyValue;
  8. import org.apache.hadoop.hbase.client.Delete;
  9. import org.apache.hadoop.hbase.client.Get;
  10. import org.apache.hadoop.hbase.client.HBaseAdmin;
  11. import org.apache.hadoop.hbase.client.HTable;
  12. import org.apache.hadoop.hbase.client.Put;
  13. import org.apache.hadoop.hbase.client.Result;
  14. import org.apache.hadoop.hbase.client.ResultScanner;
  15. import org.apache.hadoop.hbase.client.Scan;
  16. import org.apache.hadoop.hbase.util.Bytes;
  17. public class OperateTable {
  18.         // 声明静态配置
  19.         private static Configuration conf = null;
  20.         static {
  21.                 conf = HBaseConfiguration.create();
  22.                 conf.set("hbase.zookeeper.quorum",
  23.                                 "master");
  24.                 conf.set("hbase.zookeeper.property.clientPort", "2181");
  25.         }
  26.         // 创建数据库表
  27.         public static void createTable(String tableName, String[] columnFamilys)
  28.                         throws Exception {
  29.                 // 新建一个数据库管理员
  30.                 HBaseAdmin hAdmin = new HBaseAdmin(conf);
  31.                 if (hAdmin.tableExists(tableName)) {
  32.                         System.out.println("表已经存在");
  33.                         System.exit(0);
  34.                 } else {
  35.                         // 新建一个 scores 表的描述
  36.                         HTableDescriptor tableDesc = new HTableDescriptor(tableName);
  37.                         // 在描述里添加列族
  38.                         for (String columnFamily : columnFamilys) {
  39.                                 tableDesc.addFamily(new HColumnDescriptor(columnFamily));
  40.                         }
  41.                         // 根据配置好的描述建表
  42.                         hAdmin.createTable(tableDesc);
  43.                         System.out.println("创建表成功");
  44.                 }
  45.         }
  46.         // 删除数据库表
  47.         public static void deleteTable(String tableName) throws Exception {
  48.                 // 新建一个数据库管理员
  49.                 HBaseAdmin hAdmin = new HBaseAdmin(conf);
  50.                 if (hAdmin.tableExists(tableName)) {
  51.                         // 关闭一个表
  52.                         hAdmin.disableTable(tableName);
  53.                         // 删除一个表
  54.                         hAdmin.deleteTable(tableName);
  55.                         System.out.println("删除表成功");
  56.                 } else {
  57.                         System.out.println("删除的表不存在");
  58.                         System.exit(0);
  59.                 }
  60.         }
  61.         // 添加一条数据
  62.         public static void addRow(String tableName, String row,
  63.                         String columnFamily, String column, String value) throws Exception {
  64.                 HTable table = new HTable(conf, tableName);
  65.                 Put put = new Put(Bytes.toBytes(row));
  66.                 // 参数出分别:列族、列、值
  67.                 put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
  68.                                 Bytes.toBytes(value));
  69.                 table.put(put);
  70.         }
  71.         // 删除一条数据
  72.         public static void delRow(String tableName, String row) throws Exception {
  73.                 HTable table = new HTable(conf, tableName);
  74.                 Delete del = new Delete(Bytes.toBytes(row));
  75.                 table.delete(del);
  76.         }
  77.         // 删除多条数据
  78.         public static void delMultiRows(String tableName, String[] rows)
  79.                         throws Exception {
  80.                 HTable table = new HTable(conf, tableName);
  81.                 List<Delete> list = new ArrayList<Delete>();
  82.                 for (String row : rows) {
  83.                         Delete del = new Delete(Bytes.toBytes(row));
  84.                         list.add(del);
  85.                 }
  86.                 table.delete(list);
  87.         }
  88.         // get row
  89.         public static void getRow(String tableName, String row) throws Exception {
  90.                 HTable table = new HTable(conf, tableName);
  91.                 Get get = new Get(Bytes.toBytes(row));
  92.                 Result result = table.get(get);
  93.                 // 输出结果
  94.                 for (KeyValue rowKV : result.raw()) {
  95.                         System.out.print("Row Name: " + new String(rowKV.getRow()) + " ");
  96.                         System.out.print("Timestamp: " + rowKV.getTimestamp() + " ");
  97.                         System.out.print("column Family: " + new String(rowKV.getFamily()) + " ");
  98.                         System.out.print("Row Name:  " + new String(rowKV.getQualifier()) + " ");
  99.                         System.out.println("Value: " + new String(rowKV.getValue()) + " ");
  100.                 }
  101.         }
  102.         // get all records
  103.         public static void getAllRows(String tableName) throws Exception {
  104.                 HTable table = new HTable(conf, tableName);
  105.                 Scan scan = new Scan();
  106.                 ResultScanner results = table.getScanner(scan);
  107.                 // 输出结果
  108.                 for (Result result : results) {
  109.                         for (KeyValue rowKV : result.raw()) {
  110.                                 System.out.print("Row Name: " + new String(rowKV.getRow()) + " ");
  111.                                 System.out.print("Timestamp: " + rowKV.getTimestamp() + " ");
  112.                                 System.out.print("column Family: " + new String(rowKV.getFamily()) + " ");
  113.                                 System.out
  114.                                                 .print("Row Name:  " + new String(rowKV.getQualifier()) + " ");
  115.                                 System.out.println("Value: " + new String(rowKV.getValue()) + " ");
  116.                         }
  117.                 }
  118.         }
  119.         // main
  120.         public static void main(String[] args) {
  121.                 try {
  122.                         String tableName = "users2";
  123.                         // 第一步:创建数据库表:“users2”
  124.                         String[] columnFamilys = { "info", "course" };
  125.                         OperateTable.createTable(tableName, columnFamilys);
  126.                         // 第二步:向数据表的添加数据
  127.                         // 添加第一行数据
  128.                         OperateTable.addRow(tableName, "tht", "info", "age", "20");
  129.                         OperateTable.addRow(tableName, "tht", "info", "sex", "boy");
  130.                         OperateTable.addRow(tableName, "tht", "course", "china", "97");
  131.                         OperateTable.addRow(tableName, "tht", "course", "math", "128");
  132.                         OperateTable.addRow(tableName, "tht", "course", "english", "85");
  133.                         // 添加第二行数据
  134.                         OperateTable.addRow(tableName, "xiaoxue", "info", "age", "19");
  135.                         OperateTable.addRow(tableName, "xiaoxue", "info", "sex", "boy");
  136.                         OperateTable.addRow(tableName, "xiaoxue", "course", "china", "90");
  137.                         OperateTable.addRow(tableName, "xiaoxue", "course", "math", "120");
  138.                         OperateTable
  139.                                         .addRow(tableName, "xiaoxue", "course", "english", "90");
  140.                         // 添加第三行数据
  141.                         OperateTable.addRow(tableName, "qingqing", "info", "age", "18");
  142.                         OperateTable.addRow(tableName, "qingqing", "info", "sex", "girl");
  143.                         OperateTable
  144.                                         .addRow(tableName, "qingqing", "course", "china", "100");
  145.                         OperateTable.addRow(tableName, "qingqing", "course", "math", "100");
  146.                         OperateTable.addRow(tableName, "qingqing", "course", "english",
  147.                                         "99");
  148.                         // 第三步:获取一条数据
  149.                         System.out.println("获取一条数据");
  150.                         OperateTable.getRow(tableName, "tht");
  151.                         // 第四步:获取所有数据
  152.                         System.out.println("获取所有数据");
  153.                         OperateTable.getAllRows(tableName);
  154.                         // 第五步:删除一条数据
  155.                         System.out.println("删除一条数据");
  156.                         OperateTable.delRow(tableName, "tht");
  157.                         OperateTable.getAllRows(tableName);
  158.                         // 第六步:删除多条数据
  159.                         System.out.println("删除多条数据");
  160.                         String[] rows = { "xiaoxue", "qingqing" };
  161.                         OperateTable.delMultiRows(tableName, rows);
  162.                         OperateTable.getAllRows(tableName);
  163.                         // 第八步:删除数据库
  164.                         System.out.println("删除数据库");
  165.                         OperateTable.deleteTable(tableName);
  166.                 } catch (Exception err) {
  167.                         err.printStackTrace();
  168.                 }
  169.         }
  170. }
复制代码
结果:
  1. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT
  2. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:host.name=tht
  3. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:java.version=1.6.0_45
  4. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:java.vendor=Sun Microsystems Inc.
  5. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:java.home=D:\Java\jre6
  6. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:java.class.path=。。。。。。。。。。。。
  7. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:java.library.path=。。。。。。。。。。。
  8. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\
  9. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:java.compiler=<NA>
  10. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:os.name=Windows 7
  11. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:os.arch=x86
  12. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:os.version=6.1
  13. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:user.name=hadoop
  14. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:user.home=C:\Users\Administrator
  15. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Client environment:user.dir=D:\workspace\eclipse-workspace-jee-kepler\hadoop-Apps-tht
  16. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=master:2181 sessionTimeout=180000 watcher=hconnection
  17. 13/09/09 22:01:18 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 9608@tht
  18. 13/09/09 22:01:18 INFO zookeeper.ClientCnxn: Opening socket connection to server master/192.168.1.101:2181. Will not attempt to authenticate using SASL (无法定位登录配置)
  19. 13/09/09 22:01:18 INFO zookeeper.ClientCnxn: Socket connection established to master/192.168.1.101:2181, initiating session
  20. 13/09/09 22:01:18 INFO zookeeper.ClientCnxn: Session establishment complete on server master/192.168.1.101:2181, sessionid = 0x14102d851f8000b, negotiated timeout = 180000
  21. 13/09/09 22:01:18 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=master:2181 sessionTimeout=180000 watcher=catalogtracker-on-org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba8602
  22. 13/09/09 22:01:18 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 9608@tht
  23. 13/09/09 22:01:18 INFO zookeeper.ClientCnxn: Opening socket connection to server master/192.168.1.101:2181. Will not attempt to authenticate using SASL (无法定位登录配置)
  24. 13/09/09 22:01:18 INFO zookeeper.ClientCnxn: Socket connection established to master/192.168.1.101:2181, initiating session
  25. 13/09/09 22:01:18 INFO zookeeper.ClientCnxn: Session establishment complete on server master/192.168.1.101:2181, sessionid = 0x14102d851f8000c, negotiated timeout = 180000
  26. 13/09/09 22:01:20 INFO zookeeper.ZooKeeper: Session: 0x14102d851f8000c closed
  27. 13/09/09 22:01:20 INFO zookeeper.ClientCnxn: EventThread shut down
  28. 13/09/09 22:01:36 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=master:2181 sessionTimeout=180000 watcher=catalogtracker-on-org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba8602
  29. 13/09/09 22:01:36 INFO zookeeper.ClientCnxn: Opening socket connection to server master/192.168.1.101:2181. Will not attempt to authenticate using SASL (无法定位登录配置)
  30. 13/09/09 22:01:36 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 9608@tht
  31. 13/09/09 22:01:36 INFO zookeeper.ClientCnxn: Socket connection established to master/192.168.1.101:2181, initiating session
  32. 13/09/09 22:01:38 INFO zookeeper.ClientCnxn: Session establishment complete on server master/192.168.1.101:2181, sessionid = 0x14102d851f8000d, negotiated timeout = 180000
  33. 13/09/09 22:01:38 INFO zookeeper.ZooKeeper: Session: 0x14102d851f8000d closed
  34. 13/09/09 22:01:38 INFO zookeeper.ClientCnxn: EventThread shut down
  35. 创建表成功
  36. 获取一条数据
  37. Row Name: tht Timestamp: 1378735285456 column Family: course Row Name:  china Value: 97
  38. Row Name: tht Timestamp: 1378735285918 column Family: course Row Name:  english Value: 85
  39. Row Name: tht Timestamp: 1378735285591 column Family: course Row Name:  math Value: 128
  40. Row Name: tht Timestamp: 1378735285056 column Family: info Row Name:  age Value: 20
  41. Row Name: tht Timestamp: 1378735285368 column Family: info Row Name:  sex Value: boy
  42. 获取所有数据
  43. Row Name: qingqing Timestamp: 1378735286503 column Family: course Row Name:  china Value: 100
  44. Row Name: qingqing Timestamp: 1378735286547 column Family: course Row Name:  english Value: 99
  45. Row Name: qingqing Timestamp: 1378735286524 column Family: course Row Name:  math Value: 100
  46. Row Name: qingqing Timestamp: 1378735286463 column Family: info Row Name:  age Value: 18
  47. Row Name: qingqing Timestamp: 1378735286482 column Family: info Row Name:  sex Value: girl
  48. Row Name: tht Timestamp: 1378735285456 column Family: course Row Name:  china Value: 97
  49. Row Name: tht Timestamp: 1378735285918 column Family: course Row Name:  english Value: 85
  50. Row Name: tht Timestamp: 1378735285591 column Family: course Row Name:  math Value: 128
  51. Row Name: tht Timestamp: 1378735285056 column Family: info Row Name:  age Value: 20
  52. Row Name: tht Timestamp: 1378735285368 column Family: info Row Name:  sex Value: boy
  53. Row Name: xiaoxue Timestamp: 1378735286268 column Family: course Row Name:  china Value: 90
  54. Row Name: xiaoxue Timestamp: 1378735286403 column Family: course Row Name:  english Value: 90
  55. Row Name: xiaoxue Timestamp: 1378735286343 column Family: course Row Name:  math Value: 120
  56. Row Name: xiaoxue Timestamp: 1378735286114 column Family: info Row Name:  age Value: 19
  57. Row Name: xiaoxue Timestamp: 1378735286236 column Family: info Row Name:  sex Value: boy
  58. 删除一条数据
  59. Row Name: qingqing Timestamp: 1378735286503 column Family: course Row Name:  china Value: 100
  60. Row Name: qingqing Timestamp: 1378735286547 column Family: course Row Name:  english Value: 99
  61. Row Name: qingqing Timestamp: 1378735286524 column Family: course Row Name:  math Value: 100
  62. Row Name: qingqing Timestamp: 1378735286463 column Family: info Row Name:  age Value: 18
  63. Row Name: qingqing Timestamp: 1378735286482 column Family: info Row Name:  sex Value: girl
  64. Row Name: xiaoxue Timestamp: 1378735286268 column Family: course Row Name:  china Value: 90
  65. Row Name: xiaoxue Timestamp: 1378735286403 column Family: course Row Name:  english Value: 90
  66. Row Name: xiaoxue Timestamp: 1378735286343 column Family: course Row Name:  math Value: 120
  67. Row Name: xiaoxue Timestamp: 1378735286114 column Family: info Row Name:  age Value: 19
  68. Row Name: xiaoxue Timestamp: 1378735286236 column Family: info Row Name:  sex Value: boy
  69. 删除多条数据
  70. 删除数据库
  71. 13/09/09 22:01:40 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=master:2181 sessionTimeout=180000 watcher=catalogtracker-on-org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba8602
  72. 13/09/09 22:01:40 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 9608@tht
  73. 13/09/09 22:01:40 INFO zookeeper.ClientCnxn: Opening socket connection to server master/192.168.1.101:2181. Will not attempt to authenticate using SASL (无法定位登录配置)
  74. 13/09/09 22:01:40 INFO zookeeper.ClientCnxn: Socket connection established to master/192.168.1.101:2181, initiating session
  75. 13/09/09 22:01:42 INFO zookeeper.ClientCnxn: Session establishment complete on server master/192.168.1.101:2181, sessionid = 0x14102d851f8000e, negotiated timeout = 180000
  76. 13/09/09 22:01:44 INFO zookeeper.ZooKeeper: Session: 0x14102d851f8000e closed
  77. 13/09/09 22:01:44 INFO zookeeper.ClientCnxn: EventThread shut down
  78. 13/09/09 22:01:48 INFO client.HBaseAdmin: Started disable of users2
  79. 13/09/09 22:01:50 INFO client.HBaseAdmin: Disabled users2
  80. 13/09/09 22:01:51 INFO client.HBaseAdmin: Deleted users2
  81. 删除表成功
复制代码

已有(7)人评论

跳转到指定楼层
zhanggl 发表于 2014-5-29 15:37:20
楼主 我运行你的第二个程序 (使用HBase  Java  API对表users2进行操作) 会报错:
2014-05-29 15:35:09,041 INFO  client.HConnectionManager$HConnectionImplementation (HConnectionManager.java:shouldRetryGetMaster(664)) - getMaster attempt 0 of 10 failed; retrying after sleep of 1009
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
        at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1417)

        at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:1004)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:86)
        at com.sun.proxy.$Proxy7.getProtocolVersion(Unknown Source)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine.getProxy(WritableRpcEngine.java:138)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getMaster(HConnectionManager.java:711)
        at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:126)
        at cn.util.frame.baes.hbase.OperateTable.createTable(OperateTable.java:32)
        at cn.util.frame.baes.hbase.OperateTable.main(OperateTable.java:140)
回复

使用道具 举报

howtodown 发表于 2014-5-29 17:23:55
zhanggl 发表于 2014-5-29 15:37
楼主 我运行你的第二个程序 (使用HBase  Java  API对表users2进行操作) 会报错:
2014-05-29 15:35:09,0 ...
你的master挂了吧
回复

使用道具 举报

anyhuayong 发表于 2014-10-27 11:03:51
入门,好文章,楼主辛苦
回复

使用道具 举报

maizhu 发表于 2014-11-2 20:26:46
好东西,学习了
回复

使用道具 举报

cutter_point 发表于 2015-7-20 16:53:29
good,楼主学习了,这个就像HBase的service 接口了
回复

使用道具 举报

ml32 发表于 2016-3-23 20:35:08
hbase编程:通过Java api操作hbase
回复

使用道具 举报

SuperDove 发表于 2016-9-17 15:48:42
很好,学习了,自己做了代码文档以备用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条