Riak returns an error "Reading large object of size ..." when a mapreduce -
when seek run query mapreduce, riak returns error [preflist_exhausted]. in console.log warning:
riak_kv_vnode:do_get_object:1300 reading big object of size 8360185. i stored in riak big objects (up 20 mb). there setting perform mapreduce on objects of size?
my mapreduce:
{ "inputs":"myclients", "query": [{ "map": { "language":"javascript", "source":"function(riakobject){ homecoming [1]; }" } },{ "reduce":{ "language":"javascript", "source":"function(values,arg){ homecoming [values.reduce(function(acc,item){ homecoming acc + item;},0)] ;}" } }] }
riak doesn't perform objects larger couple of megabytes. map phase read each object backend , pass map function, non-trivial number of keys @ 20mb each, unlikely ever finish before timing out. possible fold employed read info map phase may cause vnode become overloaded, create appear offline, leading preflist_exhausted message.
the reading big object message informational message allow know object larger configured threshold has been read. alert objects of size potentially performance-impacting.
if must store values of size, should consider breaking them chunks , storing each chunk in separate key. perchance have bucket contains key represent overall value , contains list of block key/values need retrieved reassemble object.
if values file oriented, consider using riak cs, handles breaking big objects 1mb chunks storage.
riak
No comments:
Post a Comment