通过他们的MapReduce教程,Basho提出了MR挑战here,给出了GOOG
股票的每日股票数据:
以交易美元的形式查找每个月的最大日期 随后是整个最大的一天。 提示:你至少需要 地图和减少阶段各一个。
goog
存储区中的每一天都有一个与其数据对应的密钥以及如下所示的相应数据:
"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
函数,该函数能够按月解析,仅选择每月最大值,然后对从最大月份到最小月份的所有内容进行排序。 / p>
我是否在我的map
功能中缩短了我需要做的工作,或者这是一个大致正确的想法?
答案 0 :(得分:0)
我最初撰写的是挑战!除非你想让我给你答案,否则我会给你这个暗示:这里的关键是要考虑集合函数。您如何对条目进行分组以查找每个月的最大值,然后是整个数据集中的最大值?
此外,根据给定的数据,您无法知道当天交换的确切金额,但您可以通过将平均价格乘以交易的股票数量来猜测。