hbase倒序查詢 HBase 命令列工具

2021-10-13 08:47:44 字數 3757 閱讀 8791

根據官方的解釋 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再傳回來,這樣需要依賴客戶端,如果客戶端是遠...