HBase get和scan命令:查询数据(附带实例)
HBase Shell 数据操作的命令如下表所示:
例如,获取 Student 表中行键 001 的一行数据:
具体代码如下:
get 命令也可以根据指定的列族和列标识,获取一行中对应列族的数据或对应单元格的数据。如获取 Student 表中行键 001 的学生姓名及两个版本的学生信息,具体操作如下:
命令 | 描述 |
---|---|
put | 添加一个值到单元格中 |
get | 获取行、单元格数据 |
scan | 扫描表数据 |
count | 统计表中的逻辑行 |
delete | 删除列族或列数据 |
HBase get命令
get 命令可以获取表中一行的数据,必须指定表名和行键。例如,获取 Student 表中行键 001 的一行数据:

具体代码如下:
hbase(main):025:0> get 'Student','001' COLUMN CELL Grades:BigData timestamp = 1630071771468, value = 90 Grades:Computer timestamp = 1630071781218, value = 85 Grades:Math timestamp = 1630071788138, value = 70 StuInfo:Age timestamp = 1630071738515, value = 20 StuInfo:Sex timestamp = 1630071747571, value = Male 1 row(s) in 0.0060 seconds
get 命令也可以根据指定的列族和列标识,获取一行中对应列族的数据或对应单元格的数据。如获取 Student 表中行键 001 的学生姓名及两个版本的学生信息,具体操作如下:
hbase(main):032:0> get 'Student','001','StuInfo:Name' COLUMN CELL StuInfo:Name timestamp = 1630072022705, value = Tom 1 row(s) in 0.0040 seconds hbase(main):033:0> get 'Student','001','StuInfo' COLUMN CELL StuInfo:Age timestamp = 1630071738515, value = 20 StuInfo:Name timestamp = 1630072022705, value = Tom StuInfo:Sex timestamp = 1630071747571, value = Male 1 row(s) in 0.0040 seconds
HBase scan命令
查询数据还经常使用 scan 命令。scan 命令可以扫描全表数据,也可以扫描加入一些限定条件的表中数据,使用方式具体如下:# 查询Student全表数据,获取所有的行 hbase(main):034:0> scan 'Student' ROW COLUMN + CELL 001 column = Grades:BigData, timestamp = 1630071771468, value = 90 001 column = Grades:Computer, timestamp = 1630071781218, value = 85 001 column = Grades:Math, timestamp = 1630071788138, value = 70 001 column = StuInfo:Age, timestamp = 1630071738515, value = 20 001 column = StuInfo:Name, timestamp = 1630072022705, value = Tom 001 column = StuInfo:Sex, timestamp = 1630071747571, value = Male 1 row(s) in 0.0140 seconds # 查询Student表StuInfo列族的所有数据 hbase(main):035:0> scan 'Student',{COLUMN => "StuInfo"} ROW COLUMN + CELL 001 column = StuInfo:Age, timestamp = 1630071738515, value = 20 001 column = StuInfo:Name, timestamp = 1630072022705, value = Tom 001 column = StuInfo:Sex, timestamp = 1630071747571, value = Male 1 row(s) in 0.0050 seconds # 查询StuInfo:Name列的所有数据 hbase(main):036:0> scan 'Student',{COLUMN => "StuInfo:Name"} ROW COLUMN + CELL 001 column = StuInfo:Name, timestamp = 1630072022705, value = Tom 1 row(s) in 0.0050 seconds # 限定查询的数据条数 hbase(main):037:0> scan 'Student',{LIMIT => 1} ROW COLUMN + CELL 001 column = Grades:BigData, timestamp = 1630071771468, value = 90 001 column = Grades:Computer, timestamp = 1630071781218, value = 85 001 column = Grades:Math, timestamp = 1630071788138, value = 70 001 column = StuInfo:Age, timestamp = 1630071738515, value = 20 001 column = StuInfo:Name, timestamp = 1630072022705, value = Tom 001 column = StuInfo:Sex, timestamp = 1630071747571, value = Male 1 row(s) in 0.0080 seconds # 限定行键的范围,只包含STARTROW,不包含ENDROW hbase(main):039:0> scan 'Student',{STARTROW => '001',ENDROW => '002'} ROW COLUMN + CELL 001 column = Grades:BigData, timestamp = 1630071771468, value = 90 001 column = Grades:Computer, timestamp = 1630071781218, value = 85 001 column = Grades:Math, timestamp = 1630071788138, value = 70 001 column = StuInfo:Age, timestamp = 1630071738515, value = 20 001 column = StuInfo:Name, timestamp = 1630072022705, value = Tom 001 column = StuInfo:Sex, timestamp = 1630071747571, value = Male 1 row(s) in 0.0120 seconds统计一个 HBase 数据表中有多少行时可以使用 count 命令,该命令会进行全表扫描,但不统计相同的行键和标记“删除”的数据行的数量。当数据量大时,该命令耗费的时间将比较长。