def test_mr_search(self): """ Try a successful map/reduce from search results. """ btype = self.client.bucket_type(self.yz_mr['btype']) bucket = btype.bucket(self.yz_mr['bucket']) bucket.new( "Pebbles", { "name_s": "Fruity Pebbles", "maker_s": "Post", "sugar_i": 9, "calories_i": 110, "fruit_b": True }).store() bucket.new( "Loops", { "name_s": "Froot Loops", "maker_s": "Kellogg's", "sugar_i": 12, "calories_i": 110, "fruit_b": True }).store() bucket.new( "Charms", { "name_s": "Lucky Charms", "maker_s": "General Mills", "sugar_i": 10, "calories_i": 110, "fruit_b": False }).store() bucket.new( "Count", { "name_s": "Count Chocula", "maker_s": "General Mills", "sugar_i": 9, "calories_i": 100, "fruit_b": False }).store() bucket.new( "Crunch", { "name_s": "Cap'n Crunch", "maker_s": "Quaker Oats", "sugar_i": 12, "calories_i": 110, "fruit_b": False }).store() # Wait for Solr to catch up wait_for_yz_index(bucket, "Crunch") mr = RiakMapReduce(self.client).search(self.yz_mr['bucket'], 'fruit_b:false') mr.map("""function(v) { var solr_doc = JSON.parse(v.values[0].data); return [solr_doc["calories_i"]]; }""") result = mr.reduce('function(values, arg) ' + '{ return [values.sort()[0]]; }').run() self.assertEqual(result, [100])
def reduce(self, *args): """ Start assembling a Map/Reduce operation. A shortcut for :meth:`~riak.mapreduce.RiakMapReduce.reduce`. :rtype: :class:`~riak.mapreduce.RiakMapReduce` """ mr = RiakMapReduce(self.client) mr.add(self.bucket.name, self.key) return mr.reduce(*args)
def reduce(self, *args): """ Start assembling a Map/Reduce operation. A shortcut for :func:`RiakMapReduce.reduce`. :rtype: RiakMapReduce """ mr = RiakMapReduce(self.client) mr.add(self.bucket.name, self.key) return mr.reduce(*args)
def test_mr_search(self): """ Try a successful map/reduce from search results. """ btype = self.client.bucket_type(testrun_yz_mr['btype']) bucket = btype.bucket(testrun_yz_mr['bucket']) bucket.new("Pebbles", {"name_s": "Fruity Pebbles", "maker_s": "Post", "sugar_i": 9, "calories_i": 110, "fruit_b": True}).store() bucket.new("Loops", {"name_s": "Froot Loops", "maker_s": "Kellogg's", "sugar_i": 12, "calories_i": 110, "fruit_b": True}).store() bucket.new("Charms", {"name_s": "Lucky Charms", "maker_s": "General Mills", "sugar_i": 10, "calories_i": 110, "fruit_b": False}).store() bucket.new("Count", {"name_s": "Count Chocula", "maker_s": "General Mills", "sugar_i": 9, "calories_i": 100, "fruit_b": False}).store() bucket.new("Crunch", {"name_s": "Cap'n Crunch", "maker_s": "Quaker Oats", "sugar_i": 12, "calories_i": 110, "fruit_b": False}).store() # Wait for Solr to catch up wait_for_yz_index(bucket, "Crunch") mr = RiakMapReduce(self.client).search(testrun_yz_mr['bucket'], 'fruit_b:false') mr.map("""function(v) { var solr_doc = JSON.parse(v.values[0].data); return [solr_doc["calories_i"]]; }""") result = mr.reduce('function(values, arg) ' + '{ return [values.sort()[0]]; }').run() self.assertEqual(result, [100])