gpt4 book ai didi

apache-spark - 在 Spark Streaming 中将 RDD 打印到控制台

转载 作者:行者123 更新时间:2023-12-04 04:50:23 25 4
gpt4 key购买 nike

我编写了一个 spark 流应用程序来使用 KafkaUtils 从 Kafka 接收数据,我想做的是打印出从 Kafka 接收到的数据。这是我的代码(我使用 spark-submit 来执行我的 spark 流作业):

val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicSet)
messages.print()

当我运行它时,它工作得很好。如果在 Kafka 生产者中输入是 a,b,c,我可以从 Spark streaming 中得到如下结果:

Time: 1476481700000 ms

-------------------------------------------
(null,a)
(null,b)
(null,c)

但是如果我添加一行来计算行数,messages.print() 将无法工作。代码如下:

val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicSet)
messages.print()
messages.count().print()

我得到以下结果:

-------------------------------------------
Time: 1476481800000 ms
-------------------------------------------
4

只打印计数,不能打印数据。我的问题是为什么在添加 messages.count.print()messages.print() 不会执行。
另一个问题是 null 在元组 (null, a)(null, b)(null, c) 中代表什么。

最佳答案

print() 没有问题,它会打印两条消息并进行计数,如下所示。滚动并检查您的日志。

-------------------------------------------
Time: 1476481700000 ms
-------------------------------------------
(null,a)
(null,b)
(null,c)

-------------------------------------------
Time: 1476481800000 ms
-------------------------------------------
4

KafkaUtils.createDirectStream 方法返回 <Kafka topic, Kafka message> 的 DStream .检查thisthis与主题相关的帖子为空。

关于apache-spark - 在 Spark Streaming 中将 RDD 打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40052785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com