Hbase查询一张表的行数

本文介绍了如何在HBase中查询表的行数,包括使用HBaseHelp辅助类进行操作,参考了相关博客资源。
1.第一种方法(适用于表数据量不太大的情况)
最直接的方式是在hbase shell中执行count的命令可以统计行数。
hbase> count ‘t1′  
hbase> count ‘t1′, INTERVAL => 100000  
hbase> count ‘t1′, CACHE => 1000  
hbase> count ‘t1′, INTERVAL => 10, CACHE => 1000 
其中,INTERVAL为统计的行数间隔,默认为1000,CACHE为统计的数据缓存。这种方式效率很低,如果表行数很大的话不建议采用这种方式

2.第二种方法
public class HbaseDemoTest {
//   public static Admin admin = null;
//   public static Connection conn = null;
//   public static Configuration getConfiguration() {
//        Configuration conf = HBaseConfiguration.create();
//        conf.set("hbase.rootdir", "hdfs://192.168.8.40:9000/hbase");
//        conf.set("hbase.zookeeper.quorum", "h40:2181,h41:2181,h42:2181");
//        return conf;
//    }
    public static void main(String[] args) throws Exception {
        //表名
        long count = rowCount("TOPIC_TABLE");//括号里写入要查询的表名
    }
    public static long rowCount(String tableName) {
        Connection connection = HBaseHelper.getConnection();
        long rowCount = 0;
        try {
            HTable table = new HTable(TableName.valueOf(tableName),connection);
            Scan scan = new Scan();
            scan.setFilter(new FirstKeyOnlyFilter());
            ResultScanner resultScanner = table.getScanner(scan);
            for (Result result : resultScanner) {
                rowCount += result.size();
            }
            System.out.println("rowCount-->"+rowCount);
        } catch (IOException e) {
        }
        return rowCount;
    }
}

注意:因为关于连接hbase的配置我自己写了一个帮助类,hbasehelp 里面了,这个自己跟据自己的情况写就可以了

参考文献:感谢博主的知识分享:

https://blog.youkuaiyun.com/u013709332/article/details/52296748/

https://blog.youkuaiyun.com/m0_37739193/article/details/75286496

 

### HBase Shell 命令操作指南 #### 1. 查看所有信息及指定的结构与数据 - **查看所有的信息** 通过 `list` 命令可以列出当前 HBase 中所有的名称。 ```bash hbase> list ``` - **查看指定的结构** 使用 `describe` 命令来查看某个特定的详细结构,包括列族及其配置参数。 ```bash hbase> describe 'tableName' ``` 此命令会返回该的所有元信息,例如列族名称、压缩方式、版本控制等[^2]。 - **扫描中的数据** 利用 `scan` 命令可以从中读取符合条件的数据记录。如果需要限定范围或者应用过滤器,则可以通过附加选项实现复杂查询逻辑。例如: ```bash hbase> scan 'tableName', {LIMIT => 10} ``` 上述例子限定了只显示前10条结果[^4]。 #### 2. 创建具有多个列族的并插入数据 - **创建新** 要建立一张带有两个以上不同列族的新,可采用如下形式编写 `create` 指令: ```bash hbase> create 'studentInfo', 'personalDetails', 'academicScores' ``` 这里我们新建了一个名为 studentInfo 的格,并设置了 personalDetails 和 academicScores 这两组独立存储区域作为初始架构的一部分[^1]。 - **向内写入单个字段值** 当准备往已存在的某一里增加具体数值时,“put” 动作便派上了用场。下面展示如何给定位置设置具体的键值对儿实例化过程: ```bash hbase> put 'studentInfo', 'rowKey_001', 'personalDetails:age', '22' ``` 这条语句示,在 studentInfo 下找到 rowKey_001 所代的那一之后,再进一步定位到 personalDetails 列族下的 age 字段处填充值为 “22”的内容进去。 #### 3. 添加或删除列族/列 - **修改现有——新增加一整个新的列家族成员进来** 假设现在想要扩展之前定义好的那个学生档案库(studentInfo),让它能够容纳更多种类别的个人信息项目的话,那么就可以执这样的 alter 操作啦~比如添加一个新的 called ‘contactInformation’ 的列族: ```bash hbase> alter 'studentInfo', {NAME => 'contactInformation'} ``` 这样就成功地把 contactInformation 加到了原有的 schema 当中去了哦! - **移除不再使用的某些旧版列群组出去吧?没问题!同样也是借助alter完成使命即可~比如说我们要干掉刚才刚加上去的那个联系资料栏目(contactInformation)咯:** ```bash hbase> alter 'studentInfo', {NAME => 'contactInformation', METHOD => 'delete'} ``` 至此为止,我们就彻底告别了这个多余的组成部分啦! #### 4. 删除或清空数据 - **针对个别单元格级别的精准打击动开始了哟!即仅需消除某一特别指定的位置上的东西而已。像这么办呢? 使用 delete 方法呗! 下面的例子演示的是怎样抹掉属于 scores 数据集里面 key 是 zhangsan01 那位同学的成绩科目当中数学(Mathematics)这一项得分情况:** ```bash hbase> delete 'scores','zhangsan01','course:math' ``` 注意这里是严格匹配模式运的哈,所以得确保所提供的路径完全正确无误才噢[^3]! - **要是觉得太麻烦不想逐一遍历各个细节部分逐一处理的话,也可以干脆利落地直接清除整的内容啊。只需要简单调用 deleteall 函数就可以了呀。举个栗子来说就是要把上面提到过的那位张三先生(Zhang San)全部关联起来的东西统统删光光:** ```bash hbase> deleteall 'scores','zhangsan01' ``` 这样一来除了保留住原始的 Row Key 自身之外其他任何附属物都将被扫荡殆尽不留痕迹咯[^3]. #### 5. 删除指定 最后一步当然是学会怎么安全有效地销毁不需要的目标对象罗。这回轮到 disable 跟 drop 登场演时间喽。先暂停目标服务然后再正式卸载它就好啦。流程如下所示: ```bash hbase> disable 'targetTable' hbase> drop 'targetTable' ``` 经过这两步简单的动作组合拳过后,原先占据着宝贵资源份额的一堆垃圾包袱就被轻松甩掉了呢。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值