天天看點

hbase之shell操作

 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"

4、指定查詢的資料時間戳範圍