柚子快報(bào)邀請碼778899分享:HBase分布式數(shù)據(jù)庫(二)
柚子快報(bào)邀請碼778899分享:HBase分布式數(shù)據(jù)庫(二)
目錄
1、HBase 命令行操作2、HBase 命令行【NameSpace DDL】3、HBase 命令行【Table DDL】4、HBase 命令行【DML put】5、HBase 命令行【DML get】6、HBase 命令行【DML scan】
1、HBase 命令行操作
[root@node1 ~]# hbase shell
命令行輸入命令:help ,顯示支持命令,可以查看幫助。
2、HBase 命令行【NameSpace DDL】
列舉所有Namespace 命令:list_namespace,類似MySQL:show databases 列舉某個(gè)NameSpace中的表 命令:list_namespace_tables,類似MySQL:show tables in dbname list_namespace_tables 'Namespace的名稱'
創(chuàng)建NameSpace 命令:create_namespace,類似MySQL:create database dbname create_namespace 'Namespace的名稱
刪除NameSpace 命令:drop_namespace,只能刪除空命名空間,如果命名空間中存在表,不允許刪除 drop_namespace 'Namespace的名稱
3、HBase 命令行【Table DDL】
常見命令: Group name: ddl Commands: alter, alter_async, alter_status, clone_table_schema, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, list_regions, locate_region, show_filters
列舉所有用戶表 命令:list,類似MySQL:show tables 創(chuàng)建表 命令:create,類似MySQL:表名 + 列的信息【名稱和類型】 必須指定表名 + 至少一個(gè)列族 語法: #表示在ns1的namespace中創(chuàng)建一張表t1,這張表有一個(gè)列族叫f1,這個(gè)列族中的所有列可以存儲5個(gè)版本的值
create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}
#在default的namespace中創(chuàng)建一張表t1,這張表有三個(gè)列族,f1,f2,f3,每個(gè)列族的屬性都是默認(rèn)的
create 't1', 'f1', 'f2', 'f3'
```
查看某個(gè)表信息 命令:desc,類似MySQL :desc tbname 語法:desc ‘表名’ 判斷存在某個(gè)表是否存儲 命令:exists '表名' 表的禁用和啟用 命令:disable / enable 功能:
HBase為了避免修改或者刪除表,影響這張表正在對外提供讀寫服務(wù)規(guī)定約束:修改或者刪除表時(shí),必須先禁用表,表示這張表暫時(shí)不能對外提供服務(wù)如果是刪除:禁用以后刪除如果是修改:先禁用,然后修改,修改完成以后啟用 刪除某個(gè)表 命令:drop,類似MySQL:drop table tbname 如果要對表進(jìn)行刪除,必須先禁用表,再刪除表
4、HBase 命令行【DML put】
掌握HBase插入更新的數(shù)據(jù)命令put的使用
功能 插入 / 更新數(shù)據(jù)【某一行的某一列】 HBase數(shù)據(jù)庫屬于NoSQL數(shù)據(jù)庫,面向列操作,對表中數(shù)據(jù)操作時(shí),都是一列一列操作 # 比如,插入一條數(shù)據(jù)到HBase表中,有10列,此時(shí)操作10次,每列每列數(shù)據(jù)寫入表中
RowKey + ColumnFamily + Column + Version -> Value
[Version版本,通常不指定,插入數(shù)據(jù)時(shí),默認(rèn)情況下,以插入數(shù)據(jù)時(shí)的時(shí)間戳為version]
語法 表名+rowkey+列族+列+值 put 'ns:tbname', 'rowkey', 'cf:col', 'value' HBase表數(shù)據(jù):按照Rowkey構(gòu)建字典有序 排序規(guī)則: - 先依據(jù)RowKey升序,再按照列簇CF升序,最后列名Column升序
底層存儲也是KV結(jié)構(gòu):每一列就是一條KV數(shù)據(jù)
K:Rowkey + 列族 + 列 + 時(shí)間【降序】V:值 沒有更新和刪除:通過插入來代替的,做了標(biāo)記不再顯示
5、HBase 命令行【DML get】
功能:讀取某個(gè)Rowkey的數(shù)據(jù) 優(yōu)點(diǎn):Get是HBase中查詢數(shù)據(jù)最快的方式,并不是最常用的方式 缺點(diǎn):get命令最多只能返回一個(gè)rowkey的數(shù)據(jù),根據(jù)Rowkey進(jìn)行檢索數(shù)據(jù) 語法:get 表名 rowkey [列族,列] 用法: 1. 獲取表中某一行數(shù)據(jù)
所有列的值
get 'table_name', 'rowkey'
2. 獲取表中某一行的某個(gè)列簇?cái)?shù)據(jù)
某個(gè)列簇的所有行數(shù)據(jù)
get 'table_name', 'rowKey', 'column_family'
3. 獲取表中某一行的某個(gè)一列數(shù)據(jù)
僅僅一列數(shù)據(jù)
get 'table_name', 'rowkey', 'column_family:column_name'
6、HBase 命令行【DML scan】
功能:根據(jù)條件匹配讀取多個(gè)Rowkey的數(shù)據(jù) 語法: 讀取整張表的所有數(shù)據(jù),一般不用,類似SELECT * FROM tbl_xx
scan 'tbname'
經(jīng)常與LIMIT結(jié)合使用,獲取表中前N條數(shù)據(jù)
scan 'tbname', {LIMIT => 10}
#根據(jù)條件查詢:工作中主要使用的場景, 用到最多
scan 'tbname', {Filter}
舉例:
scan 'people', {LIMIT => 2}掃描people表中兩條數(shù)據(jù)rowkey前綴過濾器,在HBase數(shù)據(jù)查詢中,使用最多RowKey 前綴過濾器,如果表中數(shù)據(jù)的RowKey前綴與指定表達(dá)式一致,獲取數(shù)據(jù)
scan 'people', {ROWPREFIXFILTER => '1001'}
scan 'people', {ROWPREFIXFILTER => '100'}
rowkey范圍過濾器STARTROW:從某個(gè)rowkey開始,包含,閉區(qū)間
STOPROW:到某個(gè)rowkey結(jié)束,不包含,開區(qū)間
scan 'people', {STARTROW=>'1001'}
scan 'people', {STARTROW=>'1001', STOPROW=>'1003'}
面試題:HBase數(shù)據(jù)庫數(shù)據(jù)查詢方式有哪些??
1、get查詢,依據(jù)具體RowKey直接查詢數(shù)據(jù),查詢速度最快2、Scan全部掃描查詢,性能最差,幾乎不建議使用3、Scan范圍查詢,過濾器查詢,前綴匹配查詢,設(shè)置查詢RowKey范圍
7、HBase 命令行【DML count】
功能:刪除HBase中的數(shù)據(jù)語法#刪除某列的數(shù)據(jù)
delete tbname, rowkey, cf:col
#刪除某個(gè)rowkey數(shù)據(jù)
deleteall tbname, rowkey
#清空所有數(shù)據(jù):生產(chǎn)環(huán)境不建議使用,建議刪表重建
truncate tbname
示例# 刪除某一列數(shù)據(jù)
delete 'people', '1001', 'info:address'
# 刪除某一行row數(shù)據(jù)
deleteall 'people','1002'
# 清空表數(shù)據(jù)
truncate 'people'
· 在實(shí)際生產(chǎn)環(huán)境中,如果需要清空HBase某個(gè)表中數(shù)據(jù),不建議使用:truncate table_name
第1步、先禁用表disable,然后刪除表drop第2步、重新創(chuàng)建表create
柚子快報(bào)邀請碼778899分享:HBase分布式數(shù)據(jù)庫(二)
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。