我想将第一个DStream改为使用spark的第二个。但我不知道该怎么做?我已经尝试了groupByKey(),它没有工作和aggregateByKey(),它只使用RDD而不是DStream。
这是目前的结果:
DStream [(1,value1),(2,value2),(3,value3),(1,value4),(1,value5),(2,value6)]
这是我想要的结果:
DStream(1,(value1,value4,value5)) ,(2,(value2,value5)) ,(3,(value3))
感谢您的回复。
答案 0 :(得分:3)
groupByKey
就是这样做的。它会将DStream[K, V]
转换为DStream[(K, Seq[V])]
。我怀疑你对输出的期望可能是错误的。由于DStream
只是RDDs
组的无限序列,因此单独应用于每个RDD
。因此,如果第一批包含:
(1,value1),(2,value2),(3,value3),(1,value4)
和第二个
(1,value5),(2,value6)
你会得到
(1, [value1, value4]), (2, [value2]), (3, value3)
和
(1,[value5]),(2,[value6])
分别。
虽然DStreams
支持有状态操作(updateStateByKey
),但您不太可能希望在增长的集合中使用它。