HBase数据库基础


一、DDL操作

1. Namespace

HBaseNamespace 你可以理解为 MySQL 的数据库或者 OracleSchema

-- 列出所有 namespace
list_namespace
    
-- 创建 namespace
create_namespace '<name>'
    
-- 删除 namespace
drop_namespace '<name>'

2. 表管理

HBase 中一张表包含多个 蔟族,而每个 蔟族 下又可包含多个 ,而 与常见的数据库字段定义类似。

通过 create 关键字新建表,未指定 namespace 时为 default ,注意一张表至少需要一个蔟族 (cluster)

-- 列出所有表
list
    
-- 建表
create '<namespace>:<table>', '<cluster-1>', ..., '<clustern-n>'

-- 示例
create 'budai:user', 'info', 'score'

3. 表禁用

通过 Drop 关键字删除表,需要注意删除表之前需要先禁用表。

-- 禁用表
disable '<namespace>:<table>'
    
-- 是否禁用
is_disabled '<namespace>:<table>'
    
-- 删除表(需要先禁用)
drop '<namespace>:<table>'
    
-- 删除表(自动禁用再删除)
truncate '<namespace>:<table>'

二、DML操作

1. 数据插入

通过 put 关键字向表中添加字段,需要注意 put 一次只能添加一个列的值,若需要插入大量数据建议通过代码程序进行。

其中 row_key 类似于每条记录的主键,可以通过该值快速查找记录。

-- 新增数据,一次只能添加一个列
put '<namespace>:<table>', '<row_key>', '<cluster:cloumn>', '<value>'

-- 示例
put 'budai:user', '1', 'info:id', '123'
put 'budai:user', '1', 'info:name', 'alex'
put 'budai:user', '1', 'score:math', '80'
put 'budai:user', '1', 'score:english', '86'

完成插入后表中数据即如下所示:

Row Key Info Score
- Id Name Math English
1 123 alex 80 86

2. 数据查询

通过 Get 关键字可实现简单的语句查询,若需要实现复合查询建议使用 Scan 查询。

-- 查看行
get '<namespace>:<table>', 'row_key'
    
-- 查看列族
get '<namespace>:<table>', 'row_key', '<cluster>'
    
-- 查看列
get '<namespace>:<table>', 'row_key', '<cluster:cloumn>'

3. 高级查询

通过 Scan 配合 FILTER 等关键字可实现类 MySQL 的复合查询。

-- 等价 select * from table
scan '<namespace>:<table>'
    
-- 等价 select * from table where cloumn = 'value'
scan '<namespace>:<table>', COLUMNS => '<cluster:cloumn>', FILTER => "ValueFilter(=,'binary:<value>')"
    
-- 模糊查询, 等价 select * from table where cloumn like 'value'
scan '<namespace>:<table>', COLUMNS => '<cluster:cloumn>', FILTER => "ValueFilter(=,'substring:<value>')"
    
-- 组合查询, 等价 select * from table where cloumn = 'value'
scan '<namespace>:<table>', FILTER => "ColumnPrefixFilter('<cloumn>') AND ValueFilter(=,'binary:<value>')"

4. 数据删除

与常见数据库不同的是 HBasedelete 是删除单个列的值,若要删除整条记录需要通过 deleteall 关键字。

-- 删除单个列数据
delete '<namespace>:<table>', 'row_key', '<cluster:cloumn>'

-- 删除整条记录
deleteall '<namespace>:<table>', 'row_key'

文章作者: 烽火戏诸诸诸侯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 烽火戏诸诸诸侯 !
  目录