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