У меня есть DStream[(Int,Int)]
, который выглядит так:
(0,0), (1,0), (2,0), (3,0), (4,0), (5,0) и т. Д.
Я хочу сэмплировать некоторые значения и сделать поток следующим образом:
(0,1), (1,1), (2,1), (3,0), (4,0), (5,0) и т. Д.
Единственное, о чем я мог подумать, это:
val ex = input.transform(rdd=> {
val tmp = rdd.filter(_._2==0).take(fixedSize)
val arr = tmp.map(p=> (p._1,1))
val newRDD1 = ssc.sparkContext.parallelize(arr,2)
val newRDD2 = ssc.sparkContext.parallelize(tmp,2)
val ret = rdd.union(newRDD1).subtract(newRDD2)
ret
})
Работает нормально, но я хочу знать, есть ли более тонкий способ получить тот же результат.