2016-06-03 2 views
2

Мне нужно получить список классификаторов столбцов, доступных в таблице HBase.Получить имена столбцов в HBase Thrift C++?

Предположим, у меня есть таблица ' Клиенты ' с колонки ' информация: Возраст ' и ' контакт: PhoneNo '. Для того, чтобы получить список семейств столбцов я вижу там ' S это метод ' getColumnDescriptors ', которая возвращает значение ' информации ' и ' контакт '.

Но как получить полные имена столбцов ' информации: Возраст ' и ' контакта: PHONENO ' из таблицы или по крайней мере отборочные ' Возраста ' и ' PhoneNo одна '.

С помощью метода ' getRowWithColumns ' Я могу получить список имен столбцов, где я должен передать значение ключа строки.

Смогу ли я достичь этого с помощью любого другого удобного способа?

+0

У меня есть решение, работая на Java, но я не знаю, если я могу разместить его, как это C++ пост, если вы хотите, я могу отправить его, и вы просто должны изменить некоторые вещи для C++ –

+0

конечно, почему бы и нет ??? –

ответ

0

Это рабочее решение на Java, как вы просили, вам просто нужно изменить несколько вещей, чтобы перевести его на C++.

В основном этот метод сканирует таблицу и извлекает квалификаторы столбцов, а затем добавляю их в список, если этот список еще не содержит его.

Здесь я просматриваю все строки, но если все ваши строки всегда имеют одинаковые столбцы, вы можете просто сканировать первую строку, например, с помощью Get (посмотрите документацию по HBase, я написал несколько примеров там).

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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^