7
votes

Comment lire des données de HBASE?

Bonjour, j'utilise SQL, mais j'ai besoin de lire des données d'une table HBASE. Toute aide sur ce serait bien. Un livre ou peut-être juste un exemple de code à lire de la table. Quelqu'un a dit que l'utilisation d'un scanner ferait l'affaire, mais je ne sais pas comment l'utiliser.


0 commentaires

3 Réponses :


10
votes

de Le site Web :

// Sometimes, you won't know the row you're looking for. In this case, you
// use a Scanner. This will give you cursor-like interface to the contents
// of the table.  To set up a Scanner, do like you did above making a Put
// and a Get, create a Scan.  Adorn it with column names, etc.
Scan s = new Scan();
s.addColumn(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"));
ResultScanner scanner = table.getScanner(s);
try {
  // Scanners return Result instances.
  // Now, for the actual iteration. One way is to use a while loop like so:
  for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
    // print out the row we found and the columns we were looking for
    System.out.println("Found row: " + rr);
  }

  // The other approach is to use a foreach loop. Scanners are iterable!
  // for (Result rr : scanner) {
  //   System.out.println("Found row: " + rr);
  // }
} finally {
  // Make sure you close your scanners when you are done!
  // Thats why we have it inside a try/finally clause
  scanner.close();
}


1 commentaires

Cela peut tourner pour être lent car il renvoie une ligne pour chaque scanner.next () , vous pouvez d'abord activer la mise en cache avec S.SetCashing (numérosofrows) comme décrit ici .



2
votes

J'ai utilisé cela, mais pour obtenir la valeur de chaîne, vous devez utiliser la méthode getValue à partir du résultat.

byte[] bytes = rr.getValue(Bytes.toBytes("myLittleFamily"), Bytes.toBytes("someQualifier"));
System.out.println(new String(bytes));


0 commentaires

6
votes

Je voudrais offrir une solution sans méthodes obsolètes xxx


2 commentaires

Quelle dépendance maven contient cette API?


J'utilise org.apache.hbase: hbase-Client: 1.1.2