如何组合两个DStreams(pyspark)?

时间:2016-08-18 18:58:39

标签: python apache-kafka pyspark kafka-python

我有一个带有一些输入主题的kafka流。 这是我为接受kafka流而编写的代码。

conf = SparkConf().setAppName(appname) 
sc = SparkContext(conf=conf) 
ssc = StreamingContext(sc) 
kvs = KafkaUtils.createDirectStream(ssc, topics,\ 
            {"metadata.broker.list": brokers})

然后我创建两个DStreams的原始流的键和值。

keys = kvs.map(lambda x: x[0].split(" ")) 
values = kvs.map(lambda x: x[1].split(" "))

然后我在值DStream中执行一些计算。 例如,

val = values.flatMap(lambda x: x*2)

现在,我需要组合键和val DStream并以Kafka流的形式返回结果。

如何将val与corressponding键组合?

1 个答案:

答案 0 :(得分:0)

您可以使用2个DStream上的join运算符来合并它们。 进行映射时,实际上是在创建另一个流。因此,join将帮助您将它们合并在一起。

例如:

Joined_Stream = keys.join(values).(any operation like map, flatmap...)