/**
* 浏览表中某一列(族)的数据。
* 如果该列族有若干列限定符,就列出每个列限定符代表的列的数据;
* 如果列名以“columnFamily:column”形式给出,只需列出该列的数据。
* @param tableName 表名
* @param column 列名
*/
public static void scanColumn(String tableName, String column) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
String[] split = column.split(":");
// 首先判断“列名”的类型,即是“columnFamily”还是“columnFamily:column”
// 如果是“columnFamily”
if (split.length == 1) {
ResultScanner scanner = table.getScanner(column.getBytes());
for (Result result : scanner) {
// 获取该列族的所有的列限定符,存放在 cols 中
Map<byte[], byte[]> familyMap = result.getFamilyMap(Bytes.toBytes(column));
ArrayList<String> cols = new ArrayList<String>();
for(Map.Entry<byte[], byte[]> entry:familyMap.entrySet()){
cols.add(Bytes.toString(entry.getKey()));
}
// 循环便利,将所有列限定符的值都输出
for (String str : cols) {
System.out.print(str + ":" +new String(result.getValue(column.getBytes(), str.getBytes())) + " | ");
}
System.out.println();
}
// 释放扫描器
scanner.close();
} else {
// 如果是“columnFamily:column”
ResultScanner scanner = table.getScanner(split[0].getBytes(), split[1].getBytes());
for (Result result : scanner) {
System.out.println(new String(result.getValue(split[0].getBytes(), split[1].getBytes())));
}
// 释放扫描器
scanner.close();
}
table.close();
}
HBase 通过“表名”和“列族”获取该列族下的所有数据
最新推荐文章于 2021-02-28 12:22:21 发布