停止上下文后如何重用spark RDD

Sur*_*mar 2 java apache-spark rdd

我创建了一个 RDD,下面是我的程序。

public static void main(String[] args) throws JSONException, IOException, InterruptedException {

         SparkConf conf1 = new SparkConf().setAppName("SparkAutomation").setMaster("local");

         app.run(conf1);

}


private void run(SparkConf conf) throws JSONException, IOException,    InterruptedException {
JavaSparkContext sc = new JavaSparkContext(conf);

getDataFrom(sc);
sc.stop();   

}

 void getDataFrom(JavaSparkContext sc) throws JSONException, IOException, InterruptedException {

JavaRDD<String> Data = sc.textFile("/path/to/File");

}
Run Code Online (Sandbox Code Playgroud)

我想在应用程序的其他部分使用上面创建的 RDD,我必须停止上下文,我需要创建另一个 Context,并将在那里使用上面的 RDD。我的问题是,如果我将 RDD 坚持到 Memory ,我能使用它吗?

  Data.persist(StorageLevel.MEMORY_ONLY());
Run Code Online (Sandbox Code Playgroud)

或者我是否必须将其保存到磁盘。

  Data.persist(StorageLevel.DISK_ONLY());
Run Code Online (Sandbox Code Playgroud)

Ham*_*ari 5

如果您需要重新启动 Spark 上下文,您将无法在任何一种情况下重用该 RDD。RDD.persist在 Spark 上下文之外无法访问持久化的内容。每个 RDD 都专门绑定到一个单独的 Spark 上下文。

如果您想停止上下文并开始一个新的上下文,请考虑使用类似的东西持久化到底层数据存储RDD.saveAsTextFile("/saved/rdd/path"),然后使用sc.textFile("/saved/rdd/path").