hbase2.1.x put插入数据、put更新数据、get根据rowkey查询数据、append追加数据

插入数据

与 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 是21
  • timestamp 时间戳改变了,相当于版本号,每次修改数据,时间戳都会改变

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 是 李雷3
  • timestamp 时间戳改变了,相当于版本号,每次修改数据,时间戳都会改变

原文出处:/show_1IX1vLlNtr2i.html