【问题标题】:Spark streaming print on received stream接收到的流上的 Spark 流式打印
【发布时间】:2016-11-11 08:42:25
【问题描述】:

我想要实现的基本上是每次收到数据流时打印"hello world"

我知道在每个流上我都可以调用函数 foreachRDD 但这对我没有帮助,因为:

  1. 可能是没有处理数据
  2. 我不想在每个 rdd 上打印 hello,我想在整个流上打印 hello(无论我是否收到数据)。

基本上,每次程序尝试获取数据时(由于火花流上下文,它每 30 秒这样做一次)我想打印你好。

有没有办法做到这一点?是否有类似 spark 流的在线监听事件?

【问题讨论】:

    标签: scala apache-spark stream spark-streaming


    【解决方案1】:

    每个批处理间隔(在您的情况下为 30 秒)DStream 将包含一个且只有一个RDD,它在内部被多个分区划分。您可以检查它是否不为空,然后才打印 hello world:

    // Create DStream from source
    dstream.foreachRDD { rdd => if (!rdd.isEmpty) println("hello world") }
    

    【讨论】:

    • 四个基本时间参数是窗口、幻灯片、批处理和检查点间隔。批次构成窗口,批次的时间步长是滑动的,并且为了持久性,必须选择合适的检查点间隔。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多