我有一个3台服务器组成的riak集群。我可以看看bitcask建立目前这种群集正在使用多少磁盘空间,但我也想看看有多少项目目前存放在群集中。什么是优化的方式来获得在一个riak桶中的密钥计数?
群集被用于存储图像,这意味着二进制数据被存储在针对一组桶的一个键。我试图对HTTP接口使用map reduce功能,以便返回存储桶中的项目数量,但它们已超时。
什么是最优化时间的方式来从特定的桶拿到钥匙的数量的计数?
我有一个3台服务器组成的riak集群。我可以看看bitcask建立目前这种群集正在使用多少磁盘空间,但我也想看看有多少项目目前存放在群集中。什么是优化的方式来获得在一个riak桶中的密钥计数?
群集被用于存储图像,这意味着二进制数据被存储在针对一组桶的一个键。我试图对HTTP接口使用map reduce功能,以便返回存储桶中的项目数量,但它们已超时。
什么是最优化时间的方式来从特定的桶拿到钥匙的数量的计数?
计数在了Riak群集上的铲斗的键的数目不是很有效,即使使用的MapReduce函数。
我发现计数的项目数的最有效的方法是通过流API做在客户端上。以下示例使用node-js来执行此操作。
首先安装了Riak-JS客户
npm install [email protected]
然后运行命令行下面来给你算。
node -e "require('riak-js').getClient({ host: 'hostname', port: 8098 }).count('bucket');"
features.basho.com上还有一个开放的请求,使其更容易(因为正如bennettweb指出的那样,它不是最直接的任务)。
http://features.basho.com/entries/20721603-efficiently-count-keys-in-a-bucket
Upvotes,评论等,鼓励。
马克
链接错误 –
这里是我工作 - 把它放到控制台,没有进一步的安装:
curl -XPOST http://localhost:8098/mapred -H 'Content-Type: application/json' -d '
{"inputs":"THE_BUKET",
"query":[{"map":{"language":"javascript",
"keep":false,
"source":"function(riakobj) {return [1]; }"}},
{"reduce":{"language":"javascript",
"keep":true,
"name":"Riak.reduceSum"}}]}'
这是计算存储桶中条目数的非常昂贵的方法,因为它既列出存储桶中的所有关键字(这在生产中不推荐),然后还运行大量JavaScript MapReduce函数。如果这是必需的,更有效的方法如下:curl -XPOST http:// localhost:8098/mapred -H'Content-Type:application/json'-d'{“inputs”:“mybucket ”, “查询”:[{ “减少”:{ “语言”: “二郎”, “模块”: “riak_kv_mapreduce”, “功能”: “reduce_count_inputs”, “ARG”:{ “do_prereduce”:真}}} ]}” –
http://docs.basho.com/riak/latest/dev/using/2i/
款
“通过$桶索引计数桶对象”$ curl -XPOST http://localhost:8098/mapred
-H 'Content-Type: application/json'
-d '{"inputs":{
"bucket":"mybucket",
"index":"$bucket",
"key":"mybucket"
},
"query":[{"reduce":{"language":"erlang",
"module":"riak_kv_mapreduce",
"function":"reduce_count_inputs",
"arg":{"reduce_phase_batch_size":1000}
}
}]
}'
EOF
减少指数比mapreduce数据更好
要提供源代码:此方法在Riak邮件中[由francisco treacy建议](http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-November/006636.html)列表给OP。 – Dinei