您正在使用的JS函数无法执行您认为的工作:)它基于具有特定值的字段选择对象,您必须提供该特定值作为阶段的参数。
我认为您正在寻找的是
mapValuesJson可以做您想做的事。
另外,您的POJO中根本不需要构造函数。
下面的代码应该为您指明正确的方向(显然,这非常简单,POJO中的所有公共字段都没有注释):
public class App { public static void main( String[] args ) throws IOException, RiakException { IRiakClient client = RiakFactory.httpClient(); Bucket b = client.fetchBucket("test_mr").execute(); b.store("myobject", new Person()).execute(); IRiakObject o = b.fetch("myobject").execute(); System.out.println(o.getValueAsString()); BucketMapReduce m = client.mapReduce("test_mr"); m.addMapPhase(new NamedJSFunction("Riak.mapValuesJson"), true); MapReduceResult result = m.execute(); System.out.println(result.getResultRaw()); Collection<Person> tmp = result.getResult(Person.class); for (Person p : tmp) { System.out.println(p.data); } client.shutdown(); }}class Person { public String id = "12345"; public String name = "my name"; public String lastUpdate = "some time"; public String data = "some data";}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)