根據官方的解釋 apache hbase shell 是 (j)ruby 下的 irb(interactive ruby shell),任何在 irb 下的命令,在 hbase shell 下都可以使用。
可以在啟動 hbase 之後,通過 ./bin/hbase shell 來進入 hbase shell。
常用命令
基礎命令
status
查詢伺服器狀態
version
查詢 hbase 版本
whoami
檢視連線使用者
基本 shell 命令
查詢所有表名
列舉資料庫中所有表
list
ddl 命令
建立表create 命令
create 'table_name', 'cf1', 'cf2'
其中的 cf1 和 cf2 為列族名 1,列族名 2,列族需要在見表時確定,列則不需要, column family 是 schema 的一部分,設計時就需要考慮。
刪除表在刪除表之前需要使用 disable 命令,讓表失效。在修改表結構時,也需要先執行此命令
disable "table_name'
刪除表使用 drop 命令
drop 'table_name'
測試表是否存在
exists 'table_name'
會顯示表是否存在:
hbase(main):002:0> exists 'test'
table test does exist
0 row(s) in 0.2650 seconds
顯示表結構
describe 命令檢視表結構,顯示 hbase 表 schema,以及 column family 設計
describe 'table_name'
使表有效
enable 命令,和 disable 命令對應
enable 'table_name'
修改表結構
alter 修改表的結構,新增列族,刪除列族。在修改之前要先 disable ,修改完成後再 enable
新增列族
alter 'table_name', '列族'
刪除列族
alter 'table_name',
舉例:hbase(main):049:0> alter 'test','cf2'
updating all regions with the new schema...
1/1 regions updated.
done.
0 row(s) in 1.7520 seconds
hbase(main):050:0> describe 'test'
description enabled
'test', ,
1 row(s) in 0.1680 seconds
hbase(main):052:0> alter 'test',
updating all regions with the new schema...
1/1 regions updated.
done.
0 row(s) in 1.5880 seconds
hbase(main):053:0> describe 'test'
description enabled
'test',
1 row(s) in 0.2010 seconds
通常情況下列族不能被重新命名,如果需要修改列族名字,通常用命令建立乙個期望的列族名字,然後將資料複製過去,然後再刪除舊列族。
dml 命令
增加記錄
put 命令
插入資料,對於同乙個 rowkey,如果執行兩次 put,則認為是更新操作
put 'table_name', 'rowkey', '列族名 1: 列名 1', 'value'
put 't1', 'r1', 'c1', 'value', ts1 一般情況下 ts1(時間戳) 可以省略, column 可以動態擴充套件,每行可以有不同的 column。
增加值增加指定表、行的值
incr
查詢錶行數
計算表的行數,count 一般比較耗時,使用
count 'table_name'
查詢所有 rowkey
count 'table_name',
查詢記錄
get 命令獲取資料,hbase 的 shell 操作,大概順序就是命令後接表名,rowkey,列名然後在後面用花括號加上其他過濾條件。
獲取指定 rowkey 的指定列族指定列的資料,每個 column 可以有任意數量的 values,按照 timestamp 倒序自動排序,可以使用 scan 'table_name', 來驗證,詳細請檢視 scan 命令
get 'table_name', 'rowkey', '列族名:列名'
獲取指定 rowkey 的指定列族所有的資料
get 'table_name', 'rowkey', '列族名'
獲取指定 rowkey 的所有資料
get 'table_name', 'rowkey'
獲取指定時間戳的資料
get 'table_name', 'rowkey',
獲取多個版本值,查詢預設返回最新的值
get 'table_name', 'rowkey',
hbase 按照 rowkey 字典序 (1, 100, 102, 20) 自動排序,每行包含任意數量 column,每列按照 列名 column key 排序。如果有列族 cf,其中有列 cf:a, cf:b, cf:c, 則按照字典序排序。
每個資料由 tabelname+rowkey+column+timestamp=>value 唯一確定。
刪除記錄
delete 命令刪除表中資料,delete 命令只能用來刪除某一列。
刪除指定 rowkey 的指定列族的列名資料
delete 'table_name', 'rowkey', '列族名:列名'
刪除指定 rowkey 指定列族的資料
delete 'table_name', 'rowkey', '列族名『
使用 deleteall 命令來刪除 rowkey 所有 column 的 value,刪除整行資料
deleteall 'table_name', 』rowkey'
全表掃瞄
scan
全表掃瞄
hbase(main):043:0> scan 'test',
row column+cell
rowkey1 column=cf:a, timestamp=1487295285291, value=value 3
rowkey1 column=cf:a, timestamp=1487294839168, value=value 2
rowkey1 column=cf:a, timestamp=1487294704187, value=value 1
刪除全表資料 truncate
刪除全表資料,這個命令也是 disable,drop,create 命令組合而成。
truncate 'table_name'
hbase shell 指令碼
shell 命令,把所有的 hbase shell 命令寫到乙個檔案內,類似與 linux shell 指令碼順序執行所有命令,可以使用如下方法執行。
hbase shell test.hbaseshell
reference
下面是比較完整的乙個列表:
官方 reference
hbase倒序查詢 php操作hbase
這裡將介紹php如何使用thrift進行操作php。這裡僅測試scan方式,其他方法類似,可自行檢視 thbaseservice.php get put scan等方法的使用 require once hbase thbaseservice.php require once hbase types....
hbase條件查詢
一 環境 hbase版本hbase 0.20.5,hadoop的版本hadoop 0.20.2,jdk1.6 二 需求背景 在hbase中,進行條件查詢,很多的檔案都說過,但是大多數都是在說明如何設定合理的表結構以及如何設定rowkey進行查詢檢索,這樣的結構設計可以在一定層度上通過rowkey來定...
hbase分頁查詢
hbase分頁t提高查詢效率。startkey怎麼取沒有問題了。但是怎麼儲存呢,有同學可能會想到存到session,但是如果你的服務是rest api型的,就沒有session的概念了。那還有兩種選擇 一 是存到客戶端,讓客戶端每次請求時把startkey再傳回來,這樣需要依賴客戶端,如果客戶端是遠...