我是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)
我不知道是不是我的查询不正确或配置中的某些内容是错误的... 感谢
答案 0 :(得分:0)
鉴于它厌倦了在提供的过滤器上调用'write'方法(这是Filter的所有实现 - 扩展Writable - 需要实现),看起来你使用的版本不支持Filter Language,这将允许从字符串构建过滤器(通过ParseFilter.parseFilterString)。