如何一次连接2个kafka主题,但一次只能处理1个

时间:2016-12-09 19:05:30

标签: scala apache-spark spark-streaming

我想知道如何从单个spark stream作业中连接到2个kafka主题,但是一次只处理其中一个主题的消息。

我希望能够从主题#1进行处理,并根据某些条件,然后切换到流程主题#2。

我怎么能在火花中做到这一点?

2 个答案:

答案 0 :(得分:0)

我相信您可以创建两个流上下文对象,并在需要更改主题时优雅地停止和启动流。

答案 1 :(得分:0)

对于测试我使用queueStream

data = 'abcdefgh'
rddQueue1 = map(lambda x: sc.parallelize(x), zip(*[iter(data)] * 2))
rddQueue2 = map(lambda x: sc.parallelize(x), zip(*[iter(data.upper())] * 2))

s1, s2 = ssc.queueStream(rddQueue1), ssc.queueStream(rddQueue2)

s3 = s1.transformWith(lambda t, x, y: x if int(str(t)[-1]) % 2 else y, s2)

KafkaUtils也支持DStream.transformWith()