def get(name, key): ensure(name) discodbs = dbs[name] partition = util.default_partition(key, len(discodbs), None) results = discodbs[partition].get(key) if results == None: raise NotFound('db:' + name, key) else: results = list(results) if len(results) == 1: return util.encode(pickle.loads(results[0])) else: raise MultipleValues(name, key, results)
def reduce(iter, params): partitions = params['partitions'] name = params['name'] discodb = DiscoDB(kvgroup(iter)) try: # figure out what partition we are in key = discodb.keys().__iter__().next() partition = util.default_partition(key, partitions, params) discodb.dump(open(filename(name, partition), 'w')) yield partition, None except StopIteration: # no keys, nothing to write pass