2017-04-27 103 views
0

我是Spark和Spark流媒体新手,刚刚完成我的第一步。我似乎并不真正了解如何使其运作。如何从JavaPairDstream中提取列表?

我有一个包含Tuple2<Integer,List<Integer>>的JavaPairDstream。第一个整数是传感器ID,列表是传感器读数。 我需要提取列表元素,以便可以计算传感器读数的平均值。

我试图使用foreachRDD,但它没有为我工作。有人可以发布代码片段,伪代码或一些指导如何做到这一点? Java 8代码也将被赞赏。

谢谢

盖伊

回答

0

看来你想使用Scala的flatMapValues

伪代码,但它会非常类似于Java的:

val dStream = ... 
val flatten = dStream.flatMapValues(list => list) 

对于每个键你会在输入列表中每一个元素有一行,那么你可以使用减少来计算总和,平均和其他指标

例如

Input: 
key = 1, value = [1, 2, 3] 
Output: 
key = 1, value = 1 
key = 1, value = 2 
key = 1, value = 3