停止Context后如何重用spark RDD

时间:2016-03-04 12:05:10

标签: 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");

}

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

  Data.persist(StorageLevel.MEMORY_ONLY());

或者我必须坚持使用磁盘。

  Data.persist(StorageLevel.DISK_ONLY());

1 个答案:

答案 0 :(得分:4)

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

如果要停止上下文并开始新的上下文,请考虑使用RDD.saveAsTextFile("/saved/rdd/path")之类的内容持久保存到基础数据存储区,然后使用sc.textFile("/saved/rdd/path")在新的Spark上下文中读取新的RDD。