hbase shell4.以及获取每个部门的人数和平均薪资。
时间: 2023-12-03 08:43:17 浏览: 86
要获取每个部门的人数和平均薪资,需要使用HBase Shell中的聚合函数。假设我们的表名为employee,包含以下列族和列:
- info:dept - 部门信息
- info:name - 姓名
- info:salary - 薪资
首先,我们可以使用scan命令查看表中的所有数据:
```
hbase(main):001:0> scan 'employee'
```
接下来,我们使用count和avg函数获取每个部门的人数和平均薪资。假设我们要获取部门编号为001和002的信息:
```
hbase(main):002:0> import org.apache.hadoop.hbase.filter.CompareFilter
hbase(main):003:0> import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
hbase(main):004:0> import org.apache.hadoop.hbase.filter.SubstringComparator
hbase(main):005:0> import org.apache.hadoop.hbase.util.Bytes
hbase(main):006:0>
hbase(main):007:0> # 获取部门001的人数和平均薪资
hbase(main):008:0> scan 'employee', {
hbase(main):009:0> filter: SingleColumnValueFilter.new(Bytes.toBytes('info'), Bytes.toBytes('dept'), CompareFilter::CompareOp.valueOf('EQUAL'), SubstringComparator.new('001')),
hbase(main):010:0> attributes: {GROUP_COLUMNS => true},
hbase(main):011:0> caching: 1000
hbase(main):012:0> }
hbase(main):013:0>
hbase(main):014:0> # 获取部门002的人数和平均薪资
hbase(main):015:0> scan 'employee', {
hbase(main):016:0> filter: SingleColumnValueFilter.new(Bytes.toBytes('info'), Bytes.toBytes('dept'), CompareFilter::CompareOp.valueOf('EQUAL'), SubstringComparator.new('002')),
hbase(main):017:0> attributes: {GROUP_COLUMNS => true},
hbase(main):018:0> caching: 1000
hbase(main):019:0> }
```
以上命令使用了SingleColumnValueFilter过滤器,以筛选出部门编号包含"001"或"002"的所有行。然后,使用GROUP_COLUMNS选项分组,并使用count和avg函数聚合数据。最后,我们可以从输出中获取部门人数和平均薪资的信息。
阅读全文