如何使用Ruby Thrift客户端创建Accumulo Range对象



我的累加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

最新更新