HBase 扫描


The scan 命令用于查看 HTable 中的数据。使用scan命令,可以获取表数据。它的语法如下:

scan ‘<table name>’ 

例子

以下示例显示如何使用 scan 命令从表中读取数据。在这里,我们正在阅读 emp table.

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{

        // 实例化配置类
        Configuration config = HBaseConfiguration.create();

        // 实例化 HTable 类
        HTable table = new HTable(config, "emp");

        // 实例化扫描类
        Scan scan = new Scan();

        // 扫描所需的列
        scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
        scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("city"));

        // 获取扫描结果
        ResultScanner scanner = table.getScanner(scan);

        // 从扫描结果中读取值
        for (Result result = scanner.next(); result != null; result = scanner.next())

        System.out.println("Found row : " + result);
        //关闭扫描仪
        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}