Я использую искровой поток для чтения данных из кластера kafka. Я хочу отсортировать пару DStream и получить Top N в одиночку. До сих пор я сортируется с помощьюSpark 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
Мои вопросы
- Как получить только первые N элементов из dstream?
- Операция преобразования применяется rdd по rdd. Так будет ли результат сортироваться по всем элементам во всех rdds? Если не так, как это сделать?
Вы смогли это решить? –
, так как reduceByKeyAndWindow приводит к одиночному rdd. Rdd.sortBy(). Take (N) будет работать. – Knight71
result.transform (rdd => rdd.sortBy (_._ 2, false)), я думаю, что добавление во внутрь метода преобразования дает ошибку, говорящее: найдено: Array, required: rdd [?]. Не могли бы вы рассказать, как и решили? – Alok