Scala 如何在ApacheSpark中打印foreachRDD中的当前时间?

Scala 如何在ApacheSpark中打印foreachRDD中的当前时间?,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,我的批处理间隔为5秒。我想查看一批中形成的rdd的数量。所以我在forEach中添加了一个时间,以秒为单位打印时间,并在5秒后计算rdd textStream.foreachRDD(rdd =>{ println("======="+ TimeUnit.MILLISECONDS.toMinutes(Instant.now.toEpochMilli)) rdd.foreach(println(_)) }) 这将提供相同的时间(currentl空输入): 时间该变了吧? 问题1。

我的批处理间隔为5秒。
我想查看一批中形成的rdd的数量。所以我在forEach中添加了一个时间,以秒为单位打印时间,并在5秒后计算rdd

  textStream.foreachRDD(rdd =>{
  println("======="+ TimeUnit.MILLISECONDS.toMinutes(Instant.now.toEpochMilli))
  rdd.foreach(println(_))
})
这将提供相同的时间(currentl空输入):

时间该变了吧? 问题1。如何打印当前时间?
问题2。一个数据流中形成了多少rdd

问题1。如何打印当前时间

您只需使用
System.nanoTime()

textStream.foreachRDD(rdd=>{
foreach(println(System.nanoTime())
})
问题2.一个数据流中形成了多少rdd


每个批处理间隔将获得一个RDD。批处理间隔在SparkSession的配置中设置。该流称为
DStream
,它是单个RDD的序列。

每个批处理间隔一个RDD,您的意思是每秒一个RDD?例如,我有一个5秒的批处理间隔,这是否意味着5个RDD如果您有一个RDD包含最后5秒的数据。好的,那么为什么会有一个dstream.foreachRDD(它将循环到该批中的每个RDD中,对吗?),如果只有一个RDD,它将如何迭代?dstream生成多个RDD(每个批间隔一个)foreachRDD在它们之间进行迭代。批处理间隔为5秒,20秒后将得到4个RDD。
=======26461220
=======26461220
=======26461220
=======26461220