通过 hbase shell 命令显示列族和列限定符

Posted

技术标签:

【中文标题】通过 hbase shell 命令显示列族和列限定符【英文标题】:Display column families and column qualifiers through hbase shell command 【发布时间】:2017-12-11 10:53:21 【问题描述】:

我在 HBASE 中有数百万行,其中包含可数的运行时列限定符(即小于 10)。很难扫描 HBASE 表中的整个行。有没有办法通过 hbase shell 或任何可打印的实用程序打印列族中的列限定符?

【问题讨论】:

【参考方案1】:

到目前为止,我还不知道预定义的实用程序。也许您可以使用下面的代码来获取表中列族的列限定符。

用法:HbaseCqIdentifier [tableName] [columnFamily]

import java.io.IOException;
import java.util.Set;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
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 HbaseCqIdentifier 
    private static Connection conn;
    private static Set<byte[]> columnQualifiers;

    public static Admin getConnection() throws IOException 
        if (conn == null) 
            conn = ConnectionFactory.createConnection(HBaseConfiguration.create());
        
        return conn.getAdmin();
    

    public static void main(String args[]) throws IOException 
        getConnection();
        scan(args[0], args[1]);
        columnQualifiers.forEach((k) -> System.out.println("Column Qualifier : " + Bytes.toString(k)));
    

    public static void scan(String tableName, String columnFamily) throws IOException 
        System.out.println("Table Name : " + tableName);
        Table table = conn.getTable(TableName.valueOf(tableName));
        Scan scan = new Scan();
        scan.addFamily(Bytes.toBytes(columnFamily));
        ResultScanner rs = table.getScanner(scan);

        while(rs.iterator().hasNext())
            rs.forEach((k)-> columnQualifiers = k.getFamilyMap(Bytes.toBytes(columnFamily)).keySet());
        
    

注意:在类路径中添加 hadoop 和 hbase jar 以及 hbase-site.xml

【讨论】:

以上是关于通过 hbase shell 命令显示列族和列限定符的主要内容,如果未能解决你的问题,请参考以下文章

hbase shell操作语句

hadoop - hbase shell命令及Java接口

云计算--hbase shell

请问hbase shell中向一个已创建的表中添加一个列族该怎么办呢?

HBase-2HBase的原理和架构

Cassandra 数据模型