我的累加1.5与节俭代理一起运行。我正在与Ruby连接到Thrift,但是我想如果我与Python一起工作也会出现同样的情况。
我已经能够连接到Accumulo,创建更新并通过特定列扫描表。我正在尝试通过特定的行ID进行查询。
querykey = Key.new('row'=>rowid)
querykey_end = Key.new('row'=>"#{rowid} ")
queryrange = Range.new('start' => querykey, 'startInclusive' => true, 'stop' => querykey_end, 'stopInclusive' => false)
queryscanoptions = ScanOptions.new({'range' => queryrange})
不幸的是,这给我的范围构造函数带来了错误。
`initialize': wrong number of arguments (1 for 2..3) (ArgumentError)
Ruby Client上没有太多(任何)文档,因此我主要是在旧货代码中工作的。范围类类是在proxy_types.rb
中定义的,但定义的方式与我使用的其他节俭类相同。
这是一个名称空间问题。Accumulo节俭代码都存在于根名称空间中,但是Ruby拥有自己的Range
类,但没有被覆盖。这个问题存在于Accumulo 1.5.0。为了解决它,我去了Github,从1.5.2分支中抓住了生成的节俭代码,其中所有节俭对象都放在Accumulo名称空间中。现在我可以打电话给Accumulo::Range.new
,它的工作方式就像魅力。该更新还为python thrift代码添加了一个名称空间。
accamulo 1.5.2红宝石节俭代码在这里:https://github.com/apache/accumulo/tree/1.5.2-snapshot/proxy/proxy/src/src/main/ruby
这是解决所有问题的提交:https://github.com/apache/accumulo/commit/27EE2367056E56E5AD0CB6175F91154CD13D13D49E2C95C95C95C95