Javascript 里亚克:在basho MapReduce挑战中被难倒

Javascript 里亚克:在basho MapReduce挑战中被难倒,javascript,mapreduce,riak,Javascript,Mapreduce,Riak,通过MapReduce教程,Basho提出了一个MR挑战,给出了GOOG ticker的每日股票数据: 找出每个月交易金额最大的一天,以及 随后是最大的一天。提示:您至少需要 map和reduce阶段各一个 goog bucket中的每一天都有一个键,对应于它的数据和相应的数据,如下所示: "2010-04-21":{ Date: "2010-04-21", Open: "556.46", High: "560.25", Low: "552.16", Close: "554.30", Volum

通过MapReduce教程,Basho提出了一个MR挑战,给出了GOOG ticker的每日股票数据:

找出每个月交易金额最大的一天,以及 随后是最大的一天。提示:您至少需要 map和reduce阶段各一个

goog bucket中的每一天都有一个键,对应于它的数据和相应的数据,如下所示:

"2010-04-21":{
Date: "2010-04-21",
Open: "556.46",
High: "560.25",
Low: "552.16",
Close: "554.30",
Volume: "2391500",
Adj Close: "554.30"
}
由于我对MR范式和Javascript(坦率地说)相对缺乏熟悉,我想研究一下如何做到这一点。我假设这里的大部分工作实际上是在reduce函数中完成的,并且您需要一个类似以下内容的map函数:

function(value, keyData, arg){
  var data = Riak.mapValuesJson(value)[0];  
  var obj = {};
  obj[data.Date] = Math.abs(data.Open - data.Close);
  return [ obj ];
}
这会给你一个清单,如果不是每天交易的美元,至少是每天股价的变化

我接下来的问题是如何构造一个reduce函数,它可以按月解析,只选择每个月的最大值,然后从最大月份到最小月份对所有内容进行排序


我是在这里缩短了我需要在map函数中完成的工作,还是这大体上是正确的想法?

我最初编写了这个挑战!除非你想让我给你答案,否则我会给你一个提示:这里的关键是从聚合函数的角度来思考。您需要如何对条目进行分组,以找到每个月的最大值,然后是整个数据集的最大值

此外,根据给定的数据,你无法知道当天交易的确切金额,但你可以用平均价格乘以股票交易量进行猜测