val data = RDD[SciTensor]
data.map(y => {
val time = y("time")}
我们如何在SciSpark中获得时间单位和沉重的名字? 下面显示了ncdump结果:
time:units = "hours since 1800-01-01 00:00:0.0".
float precip(time, lat, lon) ;
precip:long_name = "Average Monthly Rate of Precipitation"
答案 0 :(得分:0)
感谢您提出问题。 SciSpark正致力于保护单位。
回答有关按时间划分的原始问题。 如果时间维度大于1,那么看看你的变量肯定会按时间分割。否则,你真的不需要。
沉降变量数组的维度为时间,纬度和纬度。
如果您希望按每个时间段拆分,您可以访问每个时间索引中的子数组,如下所示:
val array = y("time")()
val time1 = array(0)
val time2 = array(1)
val time3 = array(2)
etc.
如果你想在每个时间维度中提取子数组并让RDD成为这些子数组的集合,你可以这样做:
data.map(y => {
val timeArray = y("time")()
val timeLength = timeArray.shape(0)
(0 until timeLength).map(i => timeArray(i))
})
这将为您提供RDD类型的RDD [Iterable [AbstractTensor]]
Iterable [AbstractTensor]对应于您按时间分割的原始数组。
你可以更进一步,调用flatMap来获得类似RDD [AbstractTensor]类型的RDD:
data.flatMap(y => {
val timeArray = y("time")()
val timeLength = timeArray.shape(0)
(0 until timeLength).map(i => timeArray(i))
})
确保您使用的是最新版本的SciSpark。 最近引入了一些索引功能。