我将数据汇总1行,持续1天。我想将数据拆分为24 X 1 hr数据。
context.font = font;
答案 0 :(得分:2)
假设时间序列在(日,值)对中:
java.lang.RuntimeException: Unable to start activity ComponentInfo{lux.unisabana.sabanaviveenti/sabanaviveenti.unisabana.lux.unisabana.appsabana.MainActivity}: java.lang.IllegalArgumentException: AppIndex: The android-app URI host must match the package name and follow the format android-app://<package_name>/<scheme>/[host_path]. Provided URI: android-app://sabanaviveenti.unisabana.lux.unisabana.appsabana/http/host/path
并且您希望将它们转换为(小时,值)对,其中当天所有货币对的值保持不变。
(1,10)
(2,5)
(3,4)
...
以下是在基本Scala中执行此操作的方法:
(1,10)
(2,10)
(3,10)
...
(24,10)
(25,5)
...
(48,5)
(49,4)
...
(72,4)
...
以下是如何在Spark上执行此操作:
val timeSeries = Seq(1->10, 2->5, 3->4)
timeSeries.flatMap{ case(day,value) =>
((1 to 24)).map( h => ( (h+(day-1)*24),value))
}
Spark的一个复杂因素是数据可能会出现故障,这可能会破坏您的时间序列中的顺序。为了解决这个问题,最简单的方法是在RDD上调用操作之前对数据进行排序。
val rddTimeSeries = sc.makeRDD(timeSeries)
// Very similar with what we do in Scala
val perHourTs = rddTimeSeries.flatMap{ case(day,value) =>
((1 to 24)).map( hour => ( (hour + (day-1)*24 ), value))
}
// We can print it given that we know the list is small
println(perHourTs.collect().toList)