Spark Streaming Sliding Window max和min

时间:2016-11-20 14:28:08

标签: json scala hadoop apache-spark spark-streaming

我是Spark的开始;我正在研究火花流用例,我收到一条json消息,每个json消息都有一个属性' value'在解析json之后它是双倍的我得到一个数组[双]。我想找到最后15秒的max(值)和min(值),滑动窗口为2秒。 这是我的代码。

val record = KafkaUtils.createStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicMap, StorageLevel.MEMORY_ONLY_SER_2)
val lines=record.map(_._2)

val valueDtsream:DStream[Array[Double]]=lines.map { jsonRecord => parseJson(jsonRecord) }
                            .window(Seconds(15),Seconds(2))

      valueDtsream.foreachRDD
      {
         rdd => 
           if (!rdd.partitions.isEmpty)
           {
               //code to find min and max
           }
      }

ssc.start()
ssc.awaitTermination()

1 个答案:

答案 0 :(得分:3)

尝试:

valueDtsream.transform( rdd => {
  val stats = rdd.flatMap(x => x).stats
  rdd.sparkContext.parallelize(Seq((stats.min, stats.max)))
})