过滤空的rdd spark流

时间:2019-04-07 13:06:27

标签: apache-spark spark-streaming

我正在使用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)
  })

0 个答案:

没有答案