【发布时间】:2015-10-07 09:23:27
【问题描述】:
我正在使用 spark 流从 kafka 集群中读取数据。我想对 DStream 对进行排序并单独获得前 N 个。到目前为止,我已经使用
val result = ds.reduceByKeyAndWindow((x: Double, y: Double) => x + y,
Seconds(windowInterval), Seconds(batchInterval))
result.transform(rdd => rdd.sortBy(_._2, false))
result.print
我的问题是
- 如何只从 dstream 中获取前 N 个元素?
- rdd 应用了变换操作。那么结果是否会在所有 rdds 中的元素之间进行排序?如果没有怎么实现?
【问题讨论】:
-
你能解决这个问题吗?
-
因为 reduceByKeyAndWindow 导致单个 rdd 。 rdd.sortBy().take(N) 将起作用。
-
result.transform(rdd => rdd.sortBy(_._2, false)) ,我认为在转换方法中添加 take 会给出错误提示,发现:数组,需要:rdd[?]。请问你是怎么解决的?
标签: apache-spark spark-streaming