hbase之shell操作
hbase之shell操作(幫助指令)
進入hbase的用戶端:安裝過hbase的節點都可以
進入用戶端指令:hbase shell
hbase的用戶端操作界面:hbase(main):001:0>
檢視幫助指令:help
查詢相關指令的幫助:help command
ctrl+backspace是删除
----------------------------------------------------------------------------
hbase之shell操作(namespace操作)
一、簡介
hbase中沒有資料庫概念,hbase中有namespace相當于hive中的資料庫。
Group name: namespace
Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables
二、建立
help "create_namespace"
create_namespace "name"
三、檢視namespace清單
list_namespace
四、檢視較長的描述資訊
describe_namespace "name"
五、顯示目前namespace下的所有表
list_namespace_tables “name”
六、删除 namespace
drop_namespace "name"
七、注意
預設hbase中有2個namespace
default:預設,預設建表不指定namespace 就在這個下面的
hbase:hbase的系統namespace 存儲hbase本身相關資訊的
-----------------------------------------------------------------------
hbase之shell操作(DDL)
Group name: ddl
Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, locate_region, show_filters
二、建立表
1、文法1
craete "namespace:表名","family column","family column"
create "bdtest:test1","info1","info2"
2、文法2
{表的一些屬性 必須包含列族}
create "namespace:表名",{NAME => “”,VERSIONS => 3,TTL =>},{NAME => ""}
常用的屬性:VERSIONS => 1 指定資料版本, TTL => 2592000 指定資料存儲周期
create "bdtest:test2",{NAME => "info1"},{NAME => "info2",VERSIONS => 3}
三、删除表
先禁用表,在删除表
drop "namespace:表名"
disable "bdtest:test1"
drop "bdtest:test1"
drop_all
hbase> drop_all 'namespace:.*|t.*'
删除指定的所有表
四、修改表
1、修改屬性資訊
alter 'namespace:表名', '列族', {NAME => '列族', IN_MEMORY => true}, {NAME => '列族', VERSIONS => 5}
alter "bdtest:test1",{NAME => "info1",VERSIONS => 3}
其中不在花括号中的列族,可以省略,如果要添加一個預設狀态下的列族可以使用。
2、添加列族
alter "bdtest:test1",{NAME => "info3",VERSIONS => 3}
修改表的時候,列族不存在,事實上就是添加
alter "bdtest:test1","info4",{NAME => "info5",VERSIONS => 3}
3、删除列族
hbase> alter 'namespace:表名', NAME => '列族', METHOD => 'delete'
hbase> alter 'namespace:表名', 'delete' => '列族'
METHOD 用于指定對目前列族的操作
alter "bdtest:test1",NAME => "info5",METHOD => 'delete'
alter "bdtest:test1",'delete' => "info4"
注意: 表中至少有一個列族,如果表中隻剩一個列族,不允許删除
五、檢視表清單
list
hbase> list 檢視所有的表清單
hbase> list 'abc.*' 檢視所有的指定字元開頭的表default下的
hbase> list 'ns:abc.*' 檢視指定的namespace下的所有的指定字元開頭的表清單
list 'bdtest:t.*'
hbase> list 'ns:.*' 檢視指定namespace下的所有表清單
list "bdtest:.*"
六、檢視表的詳細資訊
help 'describe'
hbase> describe 't1' 檢視default下的表的描述資訊
hbase> describe 'ns1:t1' 檢視指定namespace下的所有表描述資訊的
簡寫:
hbase> desc 't1'
hbase> desc 'ns1:t1'
建表過程中,沒有指定版本資訊,預設1個。預設存儲周期,永久存儲 ttl=> forever
七、檢視表狀态
1、兩種狀态
啟用:enable 可以執行操作的
禁用:disable 不可以執行操作
2、檢視表是否禁用
is_disabled "namespace:表名"
is_disabled "bdtest:test1"
禁用true 啟用 false
3、檢視表是否啟用
is_enabled "namespace:表名"
is_enabled "bdtest:test1"
啟用 true 禁用 false
4、注意
預設建表的時候,是啟用狀态
八、禁用表和啟用表
disable "namespace:表名"
enable“namespace:表名”
disable "test1"
is_disabled "test1"
enable "test1"
disable_all "namespace:.*|t.*" 禁用指定的所有表
enable_all "namespace:.*|t.*" 啟用指定的所有表
disable_all "bdtest:.*"
is_disabled "bdtest:test1"
enable_all "bdtest:.*"
------------------------------------------------------------------
hbase之shell操作(DML)
Group name: dml
Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve
二、添加資料
行鍵 列族:列 值
hbase> put 'namespace:表名', '行鍵', '列族:列', '列的值',[ts1(時間戳 不給預設系統時間戳)]
put "bdtest:test2","rk001","info1:name","zs"
put "bdtest:test2","rk001","info1:age","18"
put "bdtest:test2","rk001","info1:addr","hebei"
三、删除資料
hbase> delete 'namespace:表名', '行鍵', '列族:列', 時間戳
base_info:age timestamp=1558847233830, value=25
delete "user_info","zhangsan_20150701_0004","base_info:age",
四、清空表資料
truncate "namespace:表名"
is_disabled "user_info"
1、- Disabling table... 禁用表
2、- Truncating table... 清空表
3、啟用表
五、掃描查詢表資料(scan)
1、全表掃描
表下的所有列族的所有列全部顯示
scan "namespace:表名"
scan "user_info"
2、指定列顯示
scan "namespace:表名",{COLUMNS => '列族:列名'}
scan "namespace:表名",{COLUMNS => ['列族:列名',"列族:列名"]}
scan "user_info",{COLUMNS => "base_info:age"}
scan "user_info",{COLUMNS => ["base_info:name","base_info:age"]}
3、指定顯示行數LIMIT
scan "namespace:表名",{COLUMNS => ['列族:列名',"列族:列名"],LIMIT => 需要顯示的行數}
scan "user_info",{COLUMNS => "base_info:age",LIMIT => 5}
4、指定rowkey範圍顯示
STARTROW指定起始的行鍵,ENDROW指定結束的行鍵
scan "namespace:表名",{COLUMNS => ['列族:列名',"列族:列名"],LIMIT=> ,STARTROW => "",ENDROW => ""}
scan "user_info",{STARTROW => "baiyc_20150716_0008",ENDROW => "zhangsan_20150701_0004"}
這種顯示方式 包含左邊界 不包含右邊界
隻指定STARTROW 不指定 ENDROW 顯示到結尾
scan "user_info",{COLUMNS => "base_info:age",STARTROW => "baiyc_20150716_0008",ENDROW => "zhangsan_20150701_0004"}
5、指定時間戳範圍
scan "namespace:表名",{COLUMNS=>"",TIMERANGE=>,LIMIT=>}
scan "user_info",{COLUMNS => "base_info:name",TIMERANGE => [1558844852080,1558844855890]}
時間戳範圍,含頭,不含尾
查詢資料 TIMERANGE => [起始時間戳,終止的時間戳]
6、總結
scan進行表資料查詢的時候2種方式
(1)全表掃描
(2)指定rowkey範圍進行查詢
六、單條查詢表資料(get)
1、查詢指定行鍵
查詢指定行鍵的 隻能查詢一條資料的
hbase> get 'namespace:表名',"行鍵"
get "user_info","zhangsan_20150701_0004"
2、查詢指定一行資料的列
COLUMN => []
get "namespace:表名","行鍵",{COLUMN => ["列族:列",“列族:列”]}
get "user_info","zhangsan_20150701_0004",{COLUMN => ["base_info:name","base_info:age"]}
3、指定查詢一行資料的時間戳
檢視某一列指定版本的資料
get "user_info","zhangsan_20150701_0004",{TIMESTAMP => 1558844848954}
get "user_info","zhangsan_20150701_0004",{COLUMN => "base_info:age",TIMESTAMP => 1558847233830}
put "user_info","zhangsan_20150701_0004","base_info:age","25"