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

2024-09-28 01:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有Accumulo 1.5和Thrift Proxy一起运行。我正在用Ruby连接thrift,但是我想如果我使用Python,也会出现同样的情况。在

我已经能够连接到Accumulo,创建更新,并按特定列扫描表。我试图按特定的行ID进行查询

querykey = Key.new('row'=>rowid)
querykey_end = Key.new('row'=>"#{rowid}\0")
queryrange = Range.new('start' => querykey, 'startInclusive' => true, 'stop' => querykey_end, 'stopInclusive' => false)
queryscanoptions = ScanOptions.new({'range' => queryrange})

不幸的是,这对范围构造函数抛出了一个错误。在

^{pr2}$

在Ruby客户机上没有太多(任何)文档,所以我一直在使用节俭的代码。Range类是在proxy_types.rb中定义的,但它的定义方式与我使用的其他Thrift类相同。在


Tags: keynew定义情况rangethriftendrow
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:18

这是一个命名空间问题。acumulo-Thrift代码都存在于根名称空间中,但是Ruby有它自己的Range类,没有被重写。此问题在Accumulo 1.5.0之前一直存在。为了解决这个问题,我去了github,从1.5.2分支获取生成的Thrift代码,其中所有Thrift对象都放在acumulo命名空间中。现在我可以调用Accumulo::Range.new,它就像一个符咒。更新还向Python thrift代码添加了一个名称空间。在

Accumulo1.5.2Ruby节俭代码在这里:https://github.com/apache/accumulo/tree/1.5.2-SNAPSHOT/proxy/src/main/ruby

这是修复所有问题的提交:https://github.com/apache/accumulo/commit/27ee2367056e5ad0cb6175f91154cd13d49e2c95

相关问题 更多 >

    热门问题