我有一个pyspark程序可以接受配置中提到的多个Kafka流,如下所示:
[stream1]
server=10.0.0.1:9090
topic=log_topic
[stream2]
server=10.0.0.2:9090
topic=file_topic
所以我的代码使用上面提到的配置加载多个这样的流:
from configobj import ConfigObj
config = ConfigObj("my.conf")
for i, j in conf.iteritems():
stream = KafkaUtils.createStream(ssc, j['server'], "consumer_%s" % (i), {j['topic']: 1}).cache()
stream.pprint()
现在说说stream1是否有以下传入内容:
aaaaa
aaaaa
aaaaa
...
和stream2具有以下内容:
bbbbb
bbbbb
bbbbb
...
使用pprint函数,我希望看到以下输出:
-----------------------------
2017-09-13 16:54:32
-----------------------------
aaaaa
aaaaa
aaaaa
...
-----------------------------
2017-09-13 16:54:32
-----------------------------
bbbbb
bbbbb
bbbbb
...
但我看到以下输出:
-----------------------------
2017-09-13 16:54:32
-----------------------------
bbbbb
bbbbb
bbbbb
...
-----------------------------
2017-09-13 16:54:32
-----------------------------
bbbbb
bbbbb
bbbbb
...
据我所知,在for循环的第二次迭代之后读取变量stream
之后,似乎存在延迟加载或某些内容。任何人都可以让我知道如何实现这一点,以便我可以在for循环中处理2个独立的流。
谢谢!
答案 0 :(得分:0)
类似的东西:
streams = []
config = ConfigObj("my.conf")
for i, j in conf.iteritems():
stream = KafkaUtils.createStream(ssc, j['server'], "consumer_%s" % (i), {j['topic']: 1}).cache()
streams.append(stream)
all_topic = ssc.union(*streams)
all_topic.pprint()