如何将DStream [List [T]]转换为DStream [T]

时间:2015-12-02 00:38:21

标签: scala spark-streaming

我是scala和spark流媒体的新手,我有一个让我困惑几个小时的问题:

目前我生成了一个列表[T]的Dstream,打印为

List(PV(57,2,1448910200000,0xD13617EBC1032E0869C7,BI Office),
PV(57,2,1447200000000,0xD13617EBC1032E0869C7,UPS office),     
PV(100,2,1449900000000,0xD13617EBC1032E0869C7,BI Office), 
PV(57,2,1447200000000,0xD13617EBC1032E0869C7,UPS office))

有没有办法将此Dstream of list转换为Dstream,如

PV(57,2,1448910200000,0xD13617EBC1032E0869C7,BI Office) 
PV(57,2,1447200000000,0xD13617EBC1032E0869C7,UPS office)
PV(100,2,1449900000000,0xD13617EBC1032E0869C7,BI Office)
PV(57,2,1447200000000,0xD13617EBC1032E0869C7,UPS office)

然后我可以将它转换为pairDStream并在Dstream上实现updateStateByKey函数。

2 个答案:

答案 0 :(得分:0)

尝试:

dstream.flatMap(list => list)

答案 1 :(得分:0)

您可以使用Dstream的flatMap功能。它将通过从源中的每个记录生成多个新记录来创建新的DStream。

val words:Dstream[List[T]] = { ........... }
val word:Dstream[T] = words.flatMap(list => list)