print() 的意外行为
Unexpected behaviour with print()
我正在尝试从 kafka
流中解析一些数据。以下是我目前正在做的事情。
Import /* … */
Object MyObject {
Def main (args: Array[String]){
/*spark streaming context set up*/
val kafkaStream = KafkaUtils.createStream(streamingContext,zkQuorum,groupID,[per-topic number of Kafka partitions to consume])
kafkaStream.persist(/*Storage Level*/)
val field_1_Retrieved = kafkaStream.parsingFunctionToRetrieveField1().print
val field_2_Retrieved = kafkaStream.parsingFunctionToRetrieveField2().print
val field_3_Retrieved = kafkaStream.parsingFunctionToRetrieveField3().print
ssc.start()
ssc.awaitTermination()
}
}
但是,这是我的输出:
-----------------------
Time xxxxxxxxxx ms
-----------------------
field_1_Retrieved
field_1_Retrieved
-----------------------
Time xxxxxxxxxy ms
-----------------------
field_2_Retrieved
field_2_Retrieved
-----------------------
Time xxxxxxxxxz ms
-----------------------
field_3_Retrieved
field_3_Retrieved
这是随机接缝,肯定不是我期望的代码。它将类似于以下内容:
Time xxxxxxxxxx ms
-----------------------
field_1_Retrieved
field_2_Retrieved
field_3_Retrieved
-----------------------
Time xxxxxxxxxy ms
-----------------------
field_1_Retrieved
field_2_Retrieved
field_3_Retrieved
我在 spark
或 kafka
的功能中遗漏了什么会导致此行为?还是我做错了?
这是预期的行为。 print
's implementation for a DStream 以时间戳横幅开头。在多个 DStream 上调用 print
将产生多个横幅。
要实现版本 #2,您需要将原始 dstream 中的数据转换为同一 DStream 中的 3 个不同版本(可能使用平面图)。鉴于未提供 parsingFunctionToRetrieveFieldx
,因此无法提供更多详细信息。
我正在尝试从 kafka
流中解析一些数据。以下是我目前正在做的事情。
Import /* … */
Object MyObject {
Def main (args: Array[String]){
/*spark streaming context set up*/
val kafkaStream = KafkaUtils.createStream(streamingContext,zkQuorum,groupID,[per-topic number of Kafka partitions to consume])
kafkaStream.persist(/*Storage Level*/)
val field_1_Retrieved = kafkaStream.parsingFunctionToRetrieveField1().print
val field_2_Retrieved = kafkaStream.parsingFunctionToRetrieveField2().print
val field_3_Retrieved = kafkaStream.parsingFunctionToRetrieveField3().print
ssc.start()
ssc.awaitTermination()
}
}
但是,这是我的输出:
-----------------------
Time xxxxxxxxxx ms
-----------------------
field_1_Retrieved
field_1_Retrieved
-----------------------
Time xxxxxxxxxy ms
-----------------------
field_2_Retrieved
field_2_Retrieved
-----------------------
Time xxxxxxxxxz ms
-----------------------
field_3_Retrieved
field_3_Retrieved
这是随机接缝,肯定不是我期望的代码。它将类似于以下内容:
Time xxxxxxxxxx ms
-----------------------
field_1_Retrieved
field_2_Retrieved
field_3_Retrieved
-----------------------
Time xxxxxxxxxy ms
-----------------------
field_1_Retrieved
field_2_Retrieved
field_3_Retrieved
我在 spark
或 kafka
的功能中遗漏了什么会导致此行为?还是我做错了?
这是预期的行为。 print
's implementation for a DStream 以时间戳横幅开头。在多个 DStream 上调用 print
将产生多个横幅。
要实现版本 #2,您需要将原始 dstream 中的数据转换为同一 DStream 中的 3 个不同版本(可能使用平面图)。鉴于未提供 parsingFunctionToRetrieveFieldx
,因此无法提供更多详细信息。