当我们想要将结果返回到Spark的上下文时,可以使用take ordered来完成任务。我通过调用 parallelize 函数将结果推送到集群来扩展这个想法,如下所示:
JavaPairDStream<Integer, String> filteredPair = pairDStream.transformToPair(
new Function<JavaPairRDD<Integer, String>, JavaPairRDD<Integer, String>>() {
public JavaPairRDD<Integer, String> call(JavaPairRDD <Integer, String> pairRDD) throws Exception {
List<Tuple2<Integer, String>> topList = pairRDD.takeOrdered(10);
return ssc.sparkContext().parallelizePairs(topList);
}
});
让我感到困扰的是,我认为只应在 transformToPair 中预期RDD转换功能。通过将动作函数与转换混合,它是否会破坏转换的懒惰?