分享

hbase编程如何获取动态列

sstutu 发表于 2014-5-18 20:02:18 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 1 31395
本帖最后由 nettman 于 2014-5-18 20:04 编辑
hbase的java操作,获取所有的行信息,不可以直接给个table名然后显示行的全被内容吗?类似shell操作的 scan ‘tablename’ ,java里面还要循环获取result的单个字段的值,但是如果有多行记录,每行的记录拥有的列名又不一定完全一样,循环输出一个固定的列名,就有可能出现空指针
hbase.jpg

如果第二行记录中没有age这个字段,不就出现空指针了吗
null.jpg
scan.jpg
大牛给解答一下
欢迎加入about云群425860289432264021 ,云计算爱好者群,关注about云腾讯认证空间

已有(1)人评论

跳转到指定楼层
nettman 发表于 2014-5-18 20:07:12


这个代码你可以参考一下:
  1. public static void QueryAll(String tableName) {
  2.         HTablePool pool = new HTablePool(configuration, 1000);
  3.         HTable table = (HTable) pool.getTable(tableName);
  4.         try {
  5.             ResultScanner rs = table.getScanner(new Scan());
  6.             for (Result r : rs) {
  7.                 System.out.println("获得到rowkey:" + new String(r.getRow()));
  8.                 for (KeyValue keyValue : r.raw()) {
  9.                     System.out.println("列:" + new String(keyValue.getFamily())
  10.                             + "====值:" + new String(keyValue.getValue()));
  11.                 }
  12.             }
  13.         } catch (IOException e) {
  14.             e.printStackTrace();
  15.         }
  16.     }
复制代码
该下面内容就可以
  1.      ResultScanner rs = table.getScanner(new Scan());
  2.             for (Result r : rs) {
  3.                 System.out.println("获得到rowkey:" + new String(r.getRow()));
  4.                 for (KeyValue keyValue : r.raw()) {
  5.                     System.out.println("列:" + new String(keyValue.getFamily())
  6.                             + "====值:" + new String(keyValue.getValue()));
  7.                 }
  8.             }
复制代码

上面是通过ResultScanner对象,如同hbase的ResultScanner,然后在循环,这样就可以获取了







回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条