I have a simple CorrugatedIron client that makes the following request:
IRiakClient riakClient = cluster.CreateClient();
RiakBinIndexRangeInput bucketKeyInput = new
RiakBinIndexRangeInput(productBucketName, "$key", "00000000", "99999999");
RiakMapReduceQuery query = new RiakMapReduceQuery()
.Inputs(bucketKeyInput)
.MapJs(m => m.Name("Riak.mapValuesJson").Keep(true));
RiakResult<RiakMapReduceResult> result =
riakClient.MapReduce(query);
So as you can see this is a very basic range m/r query. But the result comes
back as:
Riak returned an error. Code '0'. Message: timeout
CommunicationError
Another type of m/r query I have
IRiakClient riakClient = cluster.CreateClient();
var query = new RiakMapReduceQuery()
.Inputs(productBucketName)
.MapJs(m => m.Source(@"function(v,d,a) {" +
"var p = JSON.parse(v.values[0].data);" +
"var r = [];" +
"d = escape(p.Department);" +
"if(d != '') {" +
"var o = {};" +
"o[d] = 1;" +
"r.push(o);" +
"}" +
"return r;" +
"}"))
.ReduceJs(m => m.Source(@"function(v,d,a) {" +
"var r = {};" +
"for(var i in v) {" +
" for(var w in v[i]) {" +
" if(w in r) r[w] += v[i][w];" +
" else r[w] = v[i][w];" +
" }" +
"}" +
"return [r];" +
"}")
.Keep(true));
This returns but it takes far too long. I have about 60,000 items in my
bucket and this takes about 50-60 seconds to execute. The results seem
valid. For these types of m/r jobs what can I do on the server (or client)
to helo diagnose the problem. I have basic tools like iostat and top to
give me data but some pointers on using the output of these tools might
help.
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com