我正在使用Spark Streaming从eventHub读取数据,如果在等待期间值未正常化,我需要生成警报。如果rdd为空,那么我只想运行等待逻辑。因此我使用if(!rdd.isEmpty()){ add event to emptyrdd } else{ run waiting logic }
当我运行这段代码时,它第一次读取所有值,但是当下一次事件发生时,如果有条件,它将不运行。
var emptyrdd = sc.emptyRDD[String]
streamListner.foreachRDD(rdd =>
{
import spark.implicits._
if (rdd.isEmpty() == false) {
val eventStream = rdd
.map(eventData => (new String(eventData.getBytes), eventData.getSystemProperties.getOffset))
val eventJson = eventStream.map(x => x._1).filter(x => x.contains("SmartObjectGeneralEvent") && x.contains("id") && x.contains("name") && x.contains("descr") && x.contains("assetId") && x.contains("occurredAt"))
emptyrdd = eventJson.union(emptyrdd)
}
emptyrdd.toDF().show(false)
})