我正在尝试设置mapValues,以便我可以做些什么 我创建了以下RDD:
res10: Array[(Int, (Double, Double, Double))] = Array((1,(9.1383276E7,1.868480924818E12,4488.0)), (22,(107667.11999999922,2582934.208799982,4488.0)), (2,(2.15141303E8,1.0585204549689E13,4488.0)), (3,(4488.0,4488.0,4488.0)), (44,(0.0,0.0,4488.0)), (18,(1348501.0,4.06652001E8,4488.0)), (9,(4488.0,4488.0,4488.0)))
我正在尝试实现以下代码,但我的语法中出现了一些问题:
val dataStatsVals = dataStatsRDD.mapValues(x => {
x._3, x._1, x._1/x._3, math.pow(((x._2/x._3 - x._1/x._3)), 2)
})
我一直在网上搜索试图找到一个好的.mapValues示例,它做了类似的事情,但似乎无法找到它。
编辑: 输入为:求和,平方和和计数
输出为:计数,总和,平均值,方差
答案 0 :(得分:4)
如果没有样本预期输出,似乎您希望将所有这些放在元组中。如果是这样,你只是错过了外括号:
var notification = new window.Notification("Hello!",
{
body: "Hello world!",
data: "https://www.example.com/?id=" + 123
});
notification.onclick = function(e) {
window.location.href = e.target.data;
}
这会给你一个val dataStatsVals = dataStatsRDD.mapValues(x => {
(x._3, x._1, x._1/x._3, math.pow((x._2/x._3 - x._1/x._3), 2))
})
。结果将是:
Tuple4
答案 1 :(得分:2)
您只需要处理元组的正确部分,这样您就可以使用模式匹配来使其更具可读性:
val dataStatsVals = dataStatsRDD.mapValues{
case (d1: Double, d2: Double, d3: Double) => (d3, d1, d1/d3, math.pow(((d2/d3 - d1/d3)), 2))
}