我想在Apache Spark 2.1中迭代一个DataSet,我有这个方法遍历foreach中的所有行,我想要做的是拥有一个Java map,其中activity是键和一个数组一天中的分钟包含在所有日子中该特定分钟内发生的活动的频率,但由于Spark的工作方式,它将不会像这样工作。如何制作以下代码,以便我可以获得每个活动的地图或数据集,每个活动具有每分钟的出现次数(一分钟的出现位于startMinuteInDay和period + startMinuteInDay之间。
def make_frequencies(dataset: Dataset[Row]): java.util.HashMap[String, Array[Int]] = {
var freq_map = new java.util.HashMap[String, Array[Int]]
val activities = List("Sleeping", "Toileting", "Showering", "Snack", "Breakfast", "Leaving","Grooming","Spare_Time/TV","Lunch","Dinner")
for(a <- activities){
freq_map.put(a, new Array[Int](1440))
}
dataset.foreach(r => {
val period = r.getDouble(2).toInt
val startMinInDay = r.getDouble(3).toInt
val activity = r.getString(4)
println(" period " + r.getDouble(2) + " activity "+r.getString(4))
var i = startMinInDay
val end = startMinInDay + period
print()
while(i <= end && i < 1440){
freq_map.get(activity)(i) += 1
i+=1
}
})
freq_map
}