首页 > 编程笔记 > MySQL笔记 阅读:2

HBase get和scan命令:查询数据(附带实例)

HBase Shell 数据操作的命令如下表所示:

表:HBase Shell 数据操作的命令
命令 描述
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 命令,该命令会进行全表扫描,但不统计相同的行键和标记“删除”的数据行的数量。当数据量大时,该命令耗费的时间将比较长。

相关文章