【问题标题】:How to print the current time inside foreachRDD in apache spark?如何在apache spark的foreachRDD中打印当前时间?
【发布时间】:2020-08-07 07:37:34
【问题描述】:

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

  textStream.foreachRDD(rdd =>{
  println("======="+ TimeUnit.MILLISECONDS.toMinutes(Instant.now.toEpochMilli))
  rdd.foreach(println(_))
})

这给出了相同的时间(当前为空输入):

=======26461220
=======26461220
=======26461220
=======26461220

时间应该变了吧? Q1。如何打印当前的时间?
Q2。一个dstream中形成了多少个rdd?

【问题讨论】:

    标签: scala apache-spark spark-streaming


    【解决方案1】:

    第一季度。如何打印当前的时间?

    你可以简单地使用System.nanoTime()

    textStream.foreachRDD(rdd => {
      rdd.foreach(println(System.nanoTime())
    })
    

    第二季度。一个dstream中形成了多少个rdd?

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

    【讨论】:

    • 每个批次间隔一个 RDD 你的意思是每秒?说,我有一个 5 秒的批处理间隔,这是否意味着 5 rdds ?
    • 在这种情况下,您将拥有一个包含最后 5 秒数据的 RDD。
    • 好的,那为什么会有一个 dstream.foreachRDD (它会循环到该批次中的每个 rdd 对吗?),如果只有一个 rdd 它将如何迭代?
    • dstream 生成许多 RDD(每个批次间隔一个),foreachRDD 遍历它们。
    • 批处理间隔为 5 秒,20 秒后您将获得 4 个 RDD。
    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2017-06-07
    相关资源
    最近更新 更多