Beispiel #1
0
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)
Beispiel #2
0
 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