如何从JavaPairDstream中提取List?

时间:2017-04-27 12:42:13

标签: java apache-spark

我是Spark和Spark流媒体的新手,我只是迈出了第一步。看来我真的不明白如何让它发挥作用。

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

我尝试使用foreachRDD,但它对我不起作用。有人可以发布代码片段,伪代码或一些指导如何做到这一点? Java 8代码也将受到赞赏。

谢谢

1 个答案:

答案 0 :(得分:0)

您似乎想要使用flatMapValues

Scala中的伪代码,但它在Java中非常相似:

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

对于每个键,输入列表中每个元素将有一行,然后您可以使用reduce来计算总和,平均值和其他指标

例如

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