Сортировка Riak на MapReduce - PullRequest
       31

Сортировка Riak на MapReduce

0 голосов
/ 17 марта 2012
function(values) { 
    return values.sort(
        function(a, b) {
            return b['timestamp'] - a['timestamp'];
        }
    );
}

В настоящее время я выполняю приведенный выше код для фазы сокращения запроса Riak MapReduce, но он неправильно сортирует по значению ключа метки времени. Есть идеи почему?

Я использую клиент Riak Python, и это полный код, который содержит приведенный выше шаг сокращения:

query = riak_client.add('bucket')

query.map("function(v) { var data = JSON.parse(v.values[0].data); if (data.item == 'A') { return [[v.key, data]]; } return []; }")

query.reduce("function(values) { return values.sort(function(a, b) { return b['timestamp'] - a['timestamp']; }); }")

for result in query.run():
    print result

1 Ответ

2 голосов
/ 19 марта 2012

Попробуйте заключить возвращаемую часть в квадратные скобки, чтобы получить массив результатов.

function(values) { 
  return values.sort(
    function(a, b) {
        return b['timestamp'] - a['timestamp'];
    }
  );
}

Пусть это будет выглядеть так:

function(values) { 
  return [values.sort(
    function(a, b) {
        return b['timestamp'] - a['timestamp'];
    }
  )];
}
...