【问题标题】:reformat spark-streaming dstream count with print使用 print 重新格式化 spark-streaming dstream 计数
【发布时间】:2017-08-01 00:12:19
【问题描述】:

我使用这一行从我的 RDD 计数中打印一条消息:

myDStream.count.print

我得到类似的东西:

-------------------------------------------
Time: 1501499254000 ms
-------------------------------------------
2

-------------------------------------------
Time: 1501499256000 ms
-------------------------------------------
0

-------------------------------------------
Time: 1501499258000 ms
-------------------------------------------
0

我只是想像这样重新格式化这条消息:

-------------------------------------------
Time: 1501499254000 ms
-------------------------------------------
log.info Got new batch with 2 messages

-------------------------------------------
Time: 1501499256000 ms
-------------------------------------------
log.info Got new batch with 0 messages

-------------------------------------------
Time: 1501499258000 ms
-------------------------------------------
log.info Got new batch with 0 messages

你有什么想法吗?

【问题讨论】:

    标签: scala spark-streaming


    【解决方案1】:

    implementation of print 已修复。如果我们想要不同的输出,我们需要推出自己的实现:

    dstream.foreachRDD{(rdd, time) =>
        val count = rdd.count()
        println("-------------------------------------------")
        println(s"Time: $time")
        println("-------------------------------------------")
        println(s"log.info Got new batch with $count messages")
    }
    

    【讨论】:

    • 感谢您的回答,但在验证之前,我是否会减慢每 2 秒计数一次的过程(batchInterval = 2)。我需要处理大量数据,我想知道这种方法是否会造成瓶颈?
    • @a.moussa print 到控制台通常用于初步探索和调试目的。我不会推荐它用于其他任何事情。
    • 那么,将我的消息(包含计数)插入 mapr db 以监控生产中的应用程序是否是一个好的解决方案?
    • @a.moussa 绝对不是。您应该将流保存到数据库中(查找它。有很多资源可以处理它)
    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 2016-06-12
    • 2016-10-07
    • 2020-06-03
    • 1970-01-01
    • 2014-12-21
    • 2016-12-22
    • 1970-01-01
    相关资源
    最近更新 更多