Hbase記錄-HBase掃描/計數/權限


HBase掃描

scan 命令用於查看HTable數據。使用 scan 命令可以得到表中的數據。它的語法如下:

scan ‘<table name>’

下面的示例演示了如何使用scan命令從表中讀取數據。在這里讀取的是emp表。

hbase(main):010:0> scan 'emp' ROW COLUMN+CELL 1 column=personal data:city, timestamp=1417521848375, value=hyderabad 1 column=personal data:name, timestamp=1417521785385, value=ramu 1 column=professional data:designation, timestamp=1417585277,value=manager 1 column=professional data:salary, timestamp=1417521903862, value=50000 1 row(s) in 0.0370 seconds

使用Java API掃描

使用Java API掃描整個表的數據的完整程序如下:

import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; public class ScanTable{ public static void main(String args[]) throws IOException{ // Instantiating Configuration class Configuration config = HBaseConfiguration.create(); // Instantiating HTable class HTable table = new HTable(config, "emp"); // Instantiating the Scan class Scan scan = new Scan(); // Scanning the required columns scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("name")); scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("city")); // Getting the scan result ResultScanner scanner = table.getScanner(scan); // Reading values from scan result for (Result result = scanner.next(); result != null; result = Scanner.next()) System.out.println("Found row : " + result); //closing the scanner scanner.close(); } }

編譯和執行上述程序如下所示。

$javac ScanTable.java $java ScanTable

下面列出的是輸出:

Found row :
keyvalues={row1/personal:city/1418275612888/Put/vlen=5/mvcc=0,
row1/personal:name/1418035791555/Put/vlen=4/mvcc=0}

HBase計數和截斷

count

可以使用count命令計算表的行數量。它的語法如下:

count ‘<table name>’

刪除第一行后,表emp就只有兩行。驗證它,如下圖所示。

hbase(main):023:0> count 'emp' 2 row(s) in 0.090 seconds => 2

truncate

此命令將禁止刪除並重新創建一個表。truncate 的語法如下:

hbase> truncate 'table name'

下面給出是 truncate 命令的例子。在這里,我們已經截斷了emp表。

hbase(main):011:0> truncate 'emp' Truncating 'one' table (it may take a while): - Disabling table... - Truncating table... 0 row(s) in 1.5950 seconds 

截斷表之后,使用scan 命令來驗證。會得到表的行數為零。

hbase(main):017:0> scan emp ROW COLUMN+CELL 0 row(s) in 0.3110 seconds

HBase安全

我們可以授予和撤銷HBase用戶的權限。也有出於安全目的,三個命令:grant, revoke 和 user_permission.。

grant

grant命令授予特定的權限,如讀,寫,執行和管理表給定一個特定的用戶。 grant命令的語法如下:

hbase> grant <user> <permissions> [<table> [<column family> [<column; qualifier>]]

我們可以從RWXCA組,其中給予零個或多個特權給用戶

  • R - 代表讀取權限
  • W - 代表寫權限
  • X - 代表執行權限
  • C - 代表創建權限
  • A - 代表管理權限

下面給出是為用戶“Tutorialspoint'授予所有權限的例子。

hbase(main):018:0> grant 'Tutorialspoint', 'RWXCA'

revoke

revoke命令用於撤銷用戶訪問表的權限。它的語法如下:

hbase> revoke <user>

下面的代碼撤消名為“Tutorialspoint”用戶的所有權限。

hbase(main):006:0> revoke 'Tutorialspoint'

user_permission

此命令用於列出特定表的所有權限。 user_permission的語法如下:

hbase>user_permission tablename

下面的代碼列出了“emp”表的所有用戶權限。

hbase(main):013:0> user_permission 'emp'
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM