1. 进入HBase 的控制端(可以在任意一台机器上启动,只要其配置和HMaster 的配置一样): hbase shell
进入后,出现类似下面的提示符: hbase(main):002:0>
2. 输入 help , 可以列出所有的命令。
得到某个命令的详细用法: help "create"
注: 在 shell 中如果输错不能通过 ’Backspace‘ 撤消,需要同时按 ’Ctrl‘ 才可以
名称 | 命令表达式 |
---|---|
查看存在哪些表 | list |
创建表 | create '表名称', '列簇名称1','列簇名称2','列簇名称3' |
添加记录 | put '表名称', 'row_key', '列簇名称1:列名称', '值' |
查看记录 | get '表名称', '行名称' |
查看表中的记录总数 | count '表名称' |
删除记录 | delete '表名' ,'行名称' , '列名称' |
删除一张表 | 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称' |
查看所有记录 | scan "表名称" |
查看某个表某个列中所有数据 | scan "表名称" , ['列名称:'] |
查看表的信息 | desc '表名' |
更新记录 | 就是重写一遍进行覆盖 |
注意: 创建表的时候,可以只指定列簇名称,官方建议最多3个列簇。列名在添加记录的时候可以动态添加。
示例:创建表: create 'tablename', 'columnFamilyName'
e.g. create 'student', 'baseinfo' -- 创建一张名为'student'的表,'baseinfo'是列族名, 一个列族包含多个列
插入数据: put 'student', 'myrow-1', 'baseinfo:name', 'shj' --'myrow-1' 是行键,全表唯一
put 'student', 'myrow-2', 'baseinfo:name', 'Rose'
put 'student', 'myrow-2', 'baseinfo:age', '18'
查询表记录: scan 'student'
get 'student', 'myrow-2'
删除某单元格: delete 'student','myrow-2','baseinfo:age'
删除表: disable 'student' -- 需要先disable表
drop 'student'
3. 创建一张表: create 't_student', 'cf1'
从下图中,我们可以看到在 HDFS 上,会在 /hbase/data/default/ (/hbase 是在配置文件里指定的)下面创建一个文件夹。
上面的一长串的字符的文件夹,对应 的就是这个 table 中的一个 Region
4. 点击进入HDFS 中的那个文件夹后,里面有一个 cf1 的文件夹,这是我们创建表时定义的列簇的名称。
5. 在 HBase shell 中往表里插入数据
put 't_student', '007', 'cf1:name', 'bangde'
此时,在 cf1 文件夹下还是看不到数据,因为数据是先存在 MemStore 中的,可以通过下面的命令,使其写到 HDFS
flush 't_student'
6. 再次插入一些数据,然后 flush,会看到 cf1 下会多出文件,而不是修改原来的文件。
7. 运行下面的命令,可以合并多个小文件。
major_compact 't_student'
8. 退出 shell: exit
9. 查看如下文件中的内容 。直接输入 hbase (bin 目录已加入到环境变量下), 会提示相关的命令。其中有个 hfile 的命令。 输入 hbase hfile,会得到 hfile 这个命令的帮助。最终可以知道查看文件中的记录的命令是:
hbase hfile -f /hbase/data/default/t_student/b38eaa1dec1613777adb6086f22a83af/cf1/ec70debc257743849615b06561b6c389 -p