Visual c++ 获取HBase Thrift C+中的列名+;?

Visual c++ 获取HBase Thrift C+中的列名+;?,visual-c++,hbase,thrift,Visual C++,Hbase,Thrift,我需要获取HBase表中可用的列限定符列表 假设我有一个“Customers”表,列为“info:Age”和“contact:PhoneNo”。要获取列族列表,我看到有一个方法“getColumnDescriptors”,它返回值“info”和“contact” 但是如何从表中检索完整的列名'info:Age'和'contact:PhoneNo',或者至少只检索限定符'Age'和'PhoneNo' 使用“getRowWithColumns”方法,我可以获得必须传递行键值的列名列表 我能通过其他方

我需要获取HBase表中可用的列限定符列表

假设我有一个“Customers”表,列为“info:Age”和“contact:PhoneNo”。要获取列族列表,我看到有一个方法“getColumnDescriptors”,它返回值“info”和“contact”

但是如何从表中检索完整的列名'info:Age'和'contact:PhoneNo',或者至少只检索限定符'Age'和'PhoneNo'

使用“getRowWithColumns”方法,我可以获得必须传递行键值的列名列表


<>我能通过其他方便的方式实现吗?< /p> < p>这里是java中的一个工作解决方案,你只需要改变一些东西就可以把它翻译成C++。 基本上,此方法将扫描表并检索列限定符,然后如果此列表尚未包含它们,则将它们添加到列表中

在这里,我查看所有行,但是如果所有行都有相同的列,您可以只扫描第一行,例如使用
Get
(查看HBase文档,我在那里写了几个示例)

public ArrayList getColumnName(字符串tablename){
ArrayList属性=新的ArrayList();
试一试{
Table Table=this.connection.getTable(TableName.valueOf(TableName));
扫描=新扫描();
ResultScanner rs=table.getScanner(扫描);
试一试{
for(结果r=rs.next();r!=null;r=rs.next()){
对于(单元格c:r.rawCells()){
字符串族=新字符串(CellUtil.cloneFamily(c));
字符串限定符=新字符串(CellUtil.cloneQualifier(c));
System.out.println(“列族:“+族”);
System.out.println(“列限定符:“+限定符”);
如果(!properties.contains(限定符))
add(新字符串(CellUtil.cloneQualifier(c));
}
}
}最后{
rs.close();//始终关闭结果扫描程序!
}
}捕获(IOE异常){
e、 printStackTrace();
}
归还财产;
}

我有一个java的解决方案,但是我不知道我是否可以把它发布为C++的POST,如果你想我可以发布它,你只需要改变C++的一些东西
    public ArrayList<String> getColumnName(String tablename) {
    ArrayList<String> properties = new ArrayList<String>();
    try {
        Table table = this.connection.getTable(TableName.valueOf(tablename));
        Scan scan = new Scan();
        ResultScanner rs = table.getScanner(scan);
        try {
            for (Result r = rs.next(); r != null; r = rs.next()) {
                for (Cell c : r.rawCells()) {
                    String family = new String(CellUtil.cloneFamily(c));
                    String qualifier = new String(CellUtil.cloneQualifier(c));
                    System.out.println("Column Family : "+ family);
                    System.out.println("Column Qualifier : " + qualifier);
                    if (!properties.contains(qualifier))
                        properties.add(new String(CellUtil.cloneQualifier(c)));
                }

            }
        } finally {
            rs.close(); // always close the ResultScanner!
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return properties;
}