通过HBase Java API 之 Scan与ResultScanner扫描HBase表中数据
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
public class ScanResultScanner {
private static Configuration cfg = HBaseConfiguration.create();
private static Connection connection;
private static Table table;
private static ResultScanner scanner;
public static void scanAll(String tableName) throws Exception {
connection = ConnectionFactory.createConnection(cfg);
table = connection.getTable(TableName.valueOf(tableName));
// 通过Scan对象创建扫描器,扫描表中所有数据
scanner = table.getScanner(new Scan());
// 打印扫描结果
printScanResults();
connection.close();
}
public static void scanByFamily(String tableName,String family) throws Exception {
connection = ConnectionFactory.createConnection(cfg);
table = connection.getTable(TableName.valueOf(tableName));
// 通过列族(family)创建扫描器,得到基于列族扫描的数据
scanner = table.getScanner(Bytes.toBytes(family));
printScanResults();
connection.close();
}
public static void scanByColumnKey(String tableName,String family,String qualifier) throws Exception {
connection = ConnectionFactory.createConnection(cfg);
table = connection.getTable(TableName.valueOf(tableName));
// 通过列键(family:qualifier)创建扫描器,得到基于列键扫描的数据
scanner = table.getScanner(Bytes.toBytes(family),Bytes.toBytes(qualifier));
printScanResults();
connection.close();
}
// 格式化打印扫描到的数据
private static void printScanResults() {
for (Result row : scanner) {
System.out.println(row);
for (Cell cell : row.listCells()) {
System.out.println(
"RowKey:"
+ Bytes.toString(row.getRow())
+ " Family:"
+ Bytes.toString(CellUtil.cloneFamily(cell))
+ " Qualifier:"
+ Bytes.toString(CellUtil.cloneQualifier(cell))
+ " Value:"
+ Bytes.toString(CellUtil.cloneValue(cell)));
}
}
}
blic static void main(String[] args) throws Exception {
ScanResultScanner.scanAll("ns1:scores");
System.out.println("---------------------------------------------");
ScanResultScanner.scanByFamily("ns1:scores", "course");
System.out.println("---------------------------------------------");
ScanResultScanner.scanByColumnKey("ns1:scores", "course","math");
}
}