3.2 表的操作

3.2.1 创建表

create 'student','info'

说明:

  • 创建一个表, 表名叫student, 这个表内有一个列族叫info
  • 定义表的时候不需要定义列.

补充:

很多初学者都在焦急地寻找着怎样为 HBase 的表定义列。因为在传统的关系型数据库里面,建表都必须定义列,不然我的数据要放哪里?

但是你会发现 HBase 的表在新建的时候并没有地方让你定义列。这是因为 HBase 中的列全部都是灵活的,可以随便定义的。

列只有在你插入第 一条数据的时候才会生成。不过确切地说,不能叫“生成”,因为并没 有生成列定义之类的操作。你只是向 HBase 中插入了一个单元格,而这个单元格是由表:列族:行:列来定位的,所以是你在 TableA 中插入了一个单元格,这个单元格的列属性叫 A,才让这行数据有了一个 A 列,而别的行有没有 A 列 HBase 并不知道。只有在HBase 遍历到这行的时候它才能知道


3.2.2 插入数据

Hbase 是使用 put 命令向表中插入数据的.

put 'student','1001','info:sex','male'
put 'student','1001','info:age','20'

put 'student','1002','info:name','zhiling'
put 'student','1002','info:sex','female'
put 'student','1002','info:age','18'

put 'student','1001','info:sex','male'为例说明:

  • student表中插入一个单元格(cell)
  • 这个单元格的的 rowkey 是 1001, 也就是说它是1001这行中的一个列
  • 该单元格的列族是info
  • 该单元格的列名是sex
  • 该单元格的值是male

3.2.3 查看表数据

1. 全表扫描

Hbase 使用scan命令来查看表数据.

类似于传统数据库的selec语句.

scan 'student'

2. 限制起始行和结束行的扫描

scan 'student', {STARTROW => '1002'}
scan 'student', {STARTROW => '1001', STOPROW => '1001'}

注意:

  • STARROWSTOPROW必须大写.
  • 显示的结果也是前闭后开的区间

3. 获取指定行或者指定列的数据

使用 get 命令来获取.

指定行

get 'student', '1001'

指定列

get 'student', '1001', 'info:age'

指定版本

前面我们学习知道, Hbase 每个列都会保存着以前的版本的数据(创建表的时候需要指定保存的版本数, 否则默认只保存最新的一个版本). 我们也可以获取到指定版本的数据.

如果不指定版本, 就是获取的最新版本的数据.

get 'student', '1001', {COLUMN =>  'info:age', VERSIONS => 2}

4. 统计表数据行

count 'student'


3.2.4 更新指定列的数据

更新数据和添加数据的操作是一样的, 都是使用的 put 命令.

如果指定行的列不存在就是添加, 如果存在就是更新值. 但是旧值还存在, 只是形成了不同的版本.

put 'student','1002','info:name','lisi'
put 'student','1002','info:name','fengjie'

3.2.5 删除数据

1. 删除某行所有数据

deleteall 'student', '1001'

2. 删除某列数据

delete 'student','1002','info:sex'

3.2.6 清空表数据

truncate 'student'

说明:

  • 清空表的操作顺序为先 disable,然后再 truncate。

3.2.7 删除表

需要先把表 disable, 然后再 drop

disable 'student'
drop 'student'


3.2.8 查看表结构

describe 'student'

3.2.9 变更表结构

使用 alert 命令来变更表结构

比如下面的命令: 设置表 student 中ifno列族每列可以保存 3 个版本的数据

alter 'student', {NAME => 'info', VERSIONS => 3}

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-11-20 18:14:19

results matching ""

    No results matching ""