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}