HBase - Scan
使用 HBase Shell 进行扫描
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{ // 实例化 Configuration 类 Configuration config = HBaseConfiguration.create(); // 实例化 HTable 类 HTable table = new HTable(config, "emp"); // 实例化 Scan 类 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}