插入数据
与 mysql的 insert 不同,put 命令一次 只能添加一个 cell 的数据
语法
put '表名','rowkey','列族名:key','value'
提示:hbase 是 NoSQL 非关系型 数据库,所以保存数据的本质是 key-value,所以 列族名 后面的 key 可任意定义。(没有 key 也可以,一般都有)
例子-添加姓名
put 'student','1000','info:name','李雷'
关系如下图:
执行结果:
Took 0.2011 seconds
例子-添加年龄
put 'student','1000','info:age',20
执行结果:
Took 0.2011 seconds
例子-添加性别
put 'student','1000','info:sex','male'
执行结果:
Took 0.2011 seconds
根据rowkey查询记录
get 命令,根据rowkey查询一行记录
语法
get '表名','rowkey' [, {OPTIONS}]
例子
get 'student','1000'
执行结果:
COLUMN CELL
info:age timestamp=1632407892326, value=20
info:name timestamp=1632435873919, value=\xE6\x9D\x8E\xE9\x9B\xB7
info:sex timestamp=1632407899463, value=male
1 row(s)
Took 0.0178 seconds
解释:
COLUMN:列,由列族名:key组成CELL:单元格,有timestamp时间戳 和value组成
注意:不能正常显示中文
显示中文
get 'student','1000',{FORMATTER => 'toString'}
解释: {FORMATTER => 'toString'} 是 ruby 语法, 大小写不能错
显示结果如下:
COLUMN CELL
info:age timestamp=1632407892326, value=20
info:name timestamp=1632435873919, value=李雷
info:sex timestamp=1632407899463, value=male
1 row(s)
Took 0.0153 seconds
根据rowkey查询年龄
要使用 get '表名','rowkey' [, {OPTIONS}] 中的 OPTIONS
get 'student','1000','info:age'
根据rowkey查询姓名
要使用 get '表名','rowkey' [, {OPTIONS}] 中的 OPTIONS
正常显示中文:
get 'student', '1000', {COLUMN => 'info:name', FORMATTER => 'toString'}
修改数据
语法
与添加数据相同
put '表名','rowkey','列族名:key','value'
例子
修改年龄:
put 'student','1000','info:age','21'
然后查询该条记录:
get 'student','1000',{FORMATTER => 'toString'}
显示如下:
COLUMN CELL
info:age timestamp=1632436672122, value=21
info:name timestamp=1632435873919, value=李雷
info:sex timestamp=1632407899463, value=male
1 row(s)
Took 0.0236 seconds
解释:
age对应的value是21timestamp时间戳改变了,相当于版本号,每次修改数据,时间戳都会改变
append追加数据
比如在 李雷 的后面加上 3,除了使用 put 更新数据,还可以使用 append 追加数据
append '表名','rowkey','列族名:key','value'
例子
在姓名后面追加数据:
append 'student','1000','info:name','3'
然后查询该条记录:
get 'student','1000',{FORMATTER => 'toString'}
显示如下:
COLUMN CELL
info:age timestamp=1632436672122, value=21
info:name timestamp=1632435873919, value=李雷3
info:sex timestamp=1632407899463, value=male
1 row(s)
Took 0.0236 seconds
解释:
name对应的value是李雷3timestamp时间戳改变了,相当于版本号,每次修改数据,时间戳都会改变

