【发布时间】:2017-03-20 05:14:26
【问题描述】:
我是 Spark Streaming 的新手
我有包含两个值 x y 的流数据。例如
1300
2 8754
3 287
等等
在流数据中,我想得到最小的 y 值、最大的 y 值和 x 值的平均值。这需要输出如下(使用上面的示例):
287 8754 4
我已经能够在单个变换/减少上计算这些值,但无法使用单个变换完成
下面是我当前的代码
val transformedStream = windowStream.map(line => {
Array(line.split(" ")(0).toLong, line.split(" ")(1).toLong)
val smallest: DStream[Double] = transformedStream.reduce((a,b) => {
Array(0, math.min(a(1), b(1)))
}).map(u => u(1).toDouble)
val biggest = transformedStream.reduce((a,b) => {
Array(0, math.max(a(1), b(1)))
}).map(u => u(1).toDouble)
val mean = transformedStream.reduce((a, b) => Array( (a(0) + b(0))/2 )).
map(u => u(0).toDouble)
【问题讨论】:
-
那是什么版本的 Spark?
-
@JacekLaskowski 1.6.1 我知道它很旧,但我需要 Spark 使用的 Akka Actor 集成。
标签: scala apache-spark spark-streaming dstream