2
我试图减少时间序列数据,以收集结果在1小时内发生的成阵列(用于检测最大值,最小值,平均值)。火花reduceByKey只在某些条件下降低
它看起来并不我能够提供减少块会确定是否减少应该发生(添加到阵列中的值)中的条件,或减少跳过。
//data
//ID, VAL, DATETIME
tvFile.map((x) =>
(x.split(',')(0), (Array(x.split(',')(1)), Array(x.split(',')(2))))) //(ID, ([VAL], [DATETIME])
.reduceByKey((a,b) => {
val dt1 = DateTime.parse(a._2(0))
val dt2 = DateTime.parse(b._2(0))
if ((dt1.getDayOfYear == dt2.getDayOfYear) && (dt1.getHourOfDay == dt2.getHourOfDay))
(a._1 ++ b._1, a._2 ++ b._2)
else
// NOT SURE WHAT TO DO HERE
}).collect
上面是不是最有效/正确/我开始与Spark/Scala。
@tamersalama看到它也可作为笔记本:https://gist.github.com/maasg/e470654d15a73a1cc1a280e37561a8a5 – maasg