进入HBase数据库
# hbase shell
注意HBase Shell 中的回格键没用,要用【Ctrl+Backspace】,每个命令之后不需要分号(;)结束。
HBase帮助命令:
hbase> help 'create'
列出所有命名空间
hbase> list_namespace
新建命名空间
hbase> create_namespace 'ns1'
删除命名空间
hbase> drop_namespace 'ns1'
该命名空间必须为空,否则会报错。
修改命名空间
hbase> alter_namespace 'ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
列出所有表
hbase> list
列出指定命名空间下的所有表
hbase> list_namespace_tables 'ns1'
新建表
hbase> create 'ns1:t1', 'cf1'
新建一个以命名空间ns1的表t1,列族为cf1。
删除表
hbase> disable 'ns1:t1'
hbase> drop 'ns1:t1'
修改表名
HBase没有rename命令,可以通过快照功能修改表名,详见下述。
查看表内容
hbase> scan 'ns1:t1'
hbase> scan 'ns1:t1', {LIMIT=>5} # 查看前5行数据
插入
hbase> put 'ns1:t1', 'r1', 'cf1:c1', 'value'
比如我们插入以下数据:
id | name | sex | age |
---|---|---|---|
1 | 孙悟空 | 男 | 18 |
2 | 安琪拉 | 女 | 19 |
3 | 狄仁杰 | 男 | 20 |
put 'gld:student','1','cf1:name','孙悟空'
put 'gld:student','1','cf1:sex','男'
put 'gld:student','1','cf1:age','18'
put 'gld:student','2','cf1:name','安琪拉'
put 'gld:student','2','cf1:sex','女'
put 'gld:student','2','cf1:age','19'
put 'gld:student','3','cf1:name','狄仁杰'
put 'gld:student','3','cf1:sex','男'
put 'gld:student','3','cf1:age','20'
hbase> scan 'gld:student'
ROW COLUMN+CELL
1 column=cf1:age, timestamp=1538030949261, value=18
1 column=cf1:name, timestamp=1538030949174, value=\xE5\xAD\x99\xE6\x82\x9F\xE7\xA9\xBA
1 column=cf1:sex, timestamp=1538030949219, value=\xE7\x94\xB7
2 column=cf1:age, timestamp=1538030949393, value=19
2 column=cf1:name, timestamp=1538030949314, value=\xE5\xAE\x89\xE7\x90\xAA\xE6\x8B\x89
2 column=cf1:sex, timestamp=1538030949350, value=\xE5\xA5\xB3
3 column=cf1:age, timestamp=1538030950752, value=20
3 column=cf1:name, timestamp=1538030949448, value=\xE7\x8B\x84\xE4\xBB\x81\xE6\x9D\xB0
3 column=cf1:sex, timestamp=1538030949487, value=\xE7\x94\xB7
3 row(s) in 0.0230 seconds
删除
更新
查看
hbase> get 'ns1:t1', 'r1'
hbase> list_snapshots 'ns1'
SNAPSHOT TABLE + CREATION TIME
student_snapshot20180529 gld:student(Thu Mar 29 10:12:28 +0800 2018)
student_snapshot20180929 gld:student (Sat Sep 29 18:24:24 +0800 2018)
2 row(s) in 0.0280 seconds
=> ["student_snapshot20180529", "student_snapshot20180929"]
新建快照:
hbase> snapshot 'sourceTable', 'snapshotName'
从快照复制生成一个新表:
hbase> clone_snapshot 'snapshotName', 'gld:student'
在建表时预分10个区:
create 'gld:student', 'cf1', {SPLITS => ['1', '2', '3', '4', '5', '6', '7', '8', '9']}
则每个分区的Start Key和End Key分别为:
(~, 1),[1, 2),[2, 3),[3, 4),[4, 5),[5, 6),[6, 7),[7, 8),[8, 9),[9, ~)
查看HDFS是可以看到这个表下有10个文件夹(如果没有预分区,则只有一个文件夹):
$ hdfs dfs -ls /hbase/data/gld/student
Found 12 items
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/.tabledesc
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/.tmp
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/0d94e23b2b2c0b22ec9024907f65b78e
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/1b3c094e1a1c9d9434222e96f600fc60
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/31a515208c2621c6c3b3a0489c938197
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/4410dd4230c711965c871aecd8c1ffe8
drwxr-xr-x - hdfs supergroup 0 2018-10-23 15:27 /hbase/data/gld/student/4730dab32d57159db3b9214f6b908f2d
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:25 /hbase/data/gld/student/4ff074ef3ca1a7bf56461c606c1920a2
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/621cf72507b7f8942af1dca15241ecf5
drwxr-xr-x - hdfs supergroup 0 2018-10-23 15:29 /hbase/data/gld/student/8432b86e8bc1367c5872d796462281d6
drwxr-xr-x - hdfs supergroup 0 2018-10-23 14:23 /hbase/data/gld/student/c68c759df2f78c1006bc07c30a8681d1
drwxr-xr-x - hdfs supergroup 0 2018-10-31 16:31 /hbase/data/gld/student/fb9fb89a569c27ba1ca626fc3ab44c09
使用切分键’1’一分为二:
hbase> split 'tableName', 'splitKey'
hbase> split 'gld:student', '1'
继续将第二个Region进行切分,以’2’作为切分键:
hbase> split 'regionName', 'splitKey'
hbase> split 'gld:student,1,1538223641947', '2'
hbase> merge_region 'ENCODED_REGIONNAME', 'ENCODED_REGIONNAME'
hbase> merge_region 'eea56b5303ed9aca9aa2b4adc14798b8','e8324c9b047282a608588c8826484f5d'