Apache spark 无流时触发结构化流窗口

Apache spark 无流时触发结构化流窗口,apache-spark,spark-streaming,spark-structured-streaming,azure-databricks,Apache Spark,Spark Streaming,Spark Structured Streaming,Azure Databricks,我想记录从spark结构化流传入流读取到数据库的记录数。我使用foreachbatch转换传入的流批处理并写入到所需的位置。如果在特定时间内没有记录,我想记录读取的0条记录。但foreach批处理在没有流时不执行。有人能帮我吗?我的代码如下: val incomingStream=spark.readStream.format(“eventhubs”).options(customEventhubParameters.toMap).load() 这就是它的工作原理,甚至只有当有需要处理的内容以及

我想记录从spark结构化流传入流读取到数据库的记录数。我使用foreachbatch转换传入的流批处理并写入到所需的位置。如果在特定时间内没有记录,我想记录读取的0条记录。但foreach批处理在没有流时不执行。有人能帮我吗?我的代码如下:

val incomingStream=spark.readStream.format(“eventhubs”).options(customEventhubParameters.toMap).load()


这就是它的工作原理,甚至只有当有需要处理的内容以及流的状态更改时,才会调用StreamingQueryListener的mods扩展

可能还有另一种方法,但我会说“跳出框框思考”,在这样一个数据库中,每个时间段0,在查询聚合时,您将得到正确的答案


可以提供一些见解和火花:权威指南。

这就是它的工作原理,甚至只有当有需要处理的内容以及流的状态更改时,才会调用StreamingQueryListener的mods和扩展

可能还有另一种方法,但我会说“跳出框框思考”,在这样一个数据库中,每个时间段0,在查询聚合时,您将得到正确的答案


可以提供一些见解和火花:权威指南。

这就是它的工作原理。即使使用StreamingQueryListener和extension,我认为它也只能在数据即将提供的情况下工作。可能是另一种选择。@BluePhantom是否有适合我的用例的解决方案?如果没有数据流,则获得零计数?提前记录每小时0条记录,然后当您真正记录某个内容时,只需聚集以获得实际值。您是否解决了其他问题?我使用单独的线程通过累加器计数器值每小时记录记录。这就是它的工作方式。即使使用StreamingQueryListener和extension,我认为它也只能在数据即将提供的情况下工作。可能是另一种选择。@BluePhantom是否有适合我的用例的解决方案?如果没有数据流,则获得零计数?提前记录每小时0条记录,然后当您真正记录某个内容时,只需聚集以获得实际值。您是否解决了其他问题?我使用单独的线程通过累加器计数器值每小时记录一次记录。
val query=incomingStream.writeStream.foreachBatch{
  (batchDF: DataFrame, batchId: Long)=> writeStreamToDataLake(batchDF,batchId,partitionColumn,fileLocation,errorFilePath,eventHubName,configMeta)
}
              .option("checkpointLocation",fileLocation+checkpointFolder+"/"+eventHubName)
              .trigger(Trigger.ProcessingTime(triggerTime.toLong))
              .start().awaitTermination()