1

我们正在使用 Thrift 客户端从 PHP 访问 Hbase。Hbase 版本是 hbase-0.90.4-cdh3u3。

我的问题(好吧,这更像是一个疑问)是 Thrift API 应该返回TRowResult许多方法,例如:scannerGet, getRowWithColumns... 相反,它返回一个带有单个TRowResult实例的数组。

有谁知道这是为什么?这些方法(通常应该返回一行或不返回一行)是否返回多个TRowResult实例?我可以简单地在我的包装类中弹出这一行并返回它而不是返回数组(如果有空数组,则返回 null)?

.thrift 文档非常清楚应该返回的内容:

/** 
 * Get the specified columns for the specified table and row at the latest
 * timestamp. Returns an empty list if the row does not exist.
 * 
 * @return TRowResult containing the row and map of columns to TCells
 */
list<TRowResult> getRowWithColumns(

[...]

/**
 * Returns the scanner's current row value and advances to the next
 * row in the table.  When there are no more rows in the table, or a key
 * greater-than-or-equal-to the scanner's specified stopRow is reached,
 * an empty list is returned.
 *
 * @return a TRowResult containing the current row and a map of the columns to TCells.
 *
 * @throws IllegalArgument if ScannerID is invalid
 *
 * @throws NotFound when the scanner reaches the end
 */
list<TRowResult> scannerGet(

(虽然@throws NotFound已经过时了)

谢谢!

4

1 回答 1

0

有 getRows() 和scannerGetList() 方法,它们返回TRowResult 对象的数组。我用的是cdh3u4的hbase,不知道cdh3u3中是否存在这些方法。顺便说一句,cdh4 应该已经包含 hbase 0.92 并支持扫描过滤器;)

于 2012-06-14T10:58:30.057 回答