1

我是 Hbase 新手,使用版本 0.90.4-cdh3u3。我正在尝试执行一些查询以更好地理解 shell 中的 HBase 查询语法。我创建了一个表格,其中包含不同员工的工作时间。表中的单行如下所示:

hbase> scan 'Employees', {LIMIT=>1}
ROW                             COLUMN+CELL
 Alice                          column=Day:Friday, timestamp=1340903869525, value=Hours:2
 Alice                          column=Day:Monday, timestamp=1340903803699, value=Hours:4
 Alice                          column=Day:Thursday, timestamp=1340903855735, value=Hours:8
 Alice                          column=Day:Tuesday, timestamp=1340903821034, value=Hours:7
 Alice                          column=Day:Wednesday, timestamp=1340903836330, value=Hours:2

我想要一个查询,显示哪些员工工作了 8 小时以及在哪几天工作。因此,我想扫描所有行并查找值等于 8 的任何列。我正在尝试使用 ValueFilter,因为我看到它扫描所有列而不指定它们。我已经尝试了几次我的查询,它们都给出了相同的错误。

scan 'Employees', {LIMIT=>2, FILTER=>"ValueFilter(=, 'binary:8')"}
ROW                             COLUMN+CELL

ERROR: org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to contact region server basecloud02.noviidesign.com:60020 for region Employees,,1340903535790.86c7a1240ef6c8c499cba43555af2af3., row '', but failed after 7 attempts.
Exceptions:
org.jruby.exceptions.RaiseException: (NoMethodError) undefined method `write' for "ValueFilter(=, 'binary:8')":String
(this execption is repeated for each row)

我不知道是我的查询不正确还是配置中的某些内容有误...谢谢

4

1 回答 1

0

鉴于它厌倦了在提供的过滤器上调用 'write' 方法(这是所有 Filter 的实现 - 扩展 Writable - 需要实现的),您使用的版本似乎不支持Filter Language,这将允许过滤器从字符串构建(通过 ParseFilter.parseFilterString)。

于 2013-05-12T15:43:08.893 回答