如何保存 Spark Java Dstream RDD

How to save Spark Java Dstream RDD

Spark Scala API DStream提供了一种方法saveAsTextFiles将Dstream RDD存储在HDFS上。

但是Spark Java API's DStream

中没有对应的方法

如何使用 Spark 在 HDFS 中存储 DStream RDD Java API?

使用 JavaDStream 的 forEachRDD API class。

使用Dstream的foreach方法,你可以先从Dstream中获取所有的RDD,然后使用saveAsTextFile方法保存这些rdd。

这里是示例代码

sortedCounts.foreach(new Function<JavaPairRDD<Integer, String>, Void>() {
                    public Void call(JavaPairRDD<Integer, String> rdd) {
                        rdd.saveAsTextFile(path);
                        return null;
                    }
                });

Time参数可用于prefix/postfix实际路径。

myrdd.foreachRDD(new Function2<JavaPairRDD<Integer, String>, Time, Void>() {
    public Void call(JavaPairRDD<Integer, String> rdd) {
                        rdd.saveAsTextFile(path + "-" + time.toString().split(" ")[0]);
                        return null;
                    }
                });

尝试使用 dstream() 方法将 JavaDStream 转换为 DStream。例如..

lines.dstream().saveAsObjectFiles("pre", "suf")

如果JavaDStream对象是dstream,目录路径是path可以保存为

 dstream.foreachRDD(rdd -> {
                rdd.saveAsTextFile(path);
            });