我有一个包含字符串对列表的文件。第一对代表一个id,第二对代表一个值。
// saving
List<Tuple2> l = new ArrayList<>(0);
JavaRDD<Tuple2> rddL = javaContext.parallelize(l);
JavaPairRDD<String, String> rddPair = rddL.mapToPair(t -> t);
rddPair.saveAsTextFile(collection+".txt");
// loading
JavaPairRDD<String, String> loadedCollection = JavaPairRDD.fromJavaRDD(javaContext.objectFile(collection+".txt"));
在某些时候,我需要添加新行或更新条目。因此,我加载文件,创建一个JavaPairRDD,但它们是不可变的,因此我无法添加,删除或更改。
这样做的最佳做法是什么?我是否需要删除旧文件并在每次想要更改内容时保存一个新文件?
答案 0 :(得分:0)
RDD本身不包含任何数据。 它只保存有关如何从加载的数据(即谱系)计算新数据的信息。 RDD是不可变的,并且为了更改它所代表的数据 - 您需要从中创建另一个RDD,并应用所需的转换。
这样做的最佳做法是什么?我是否需要删除旧文件 每次我想改变什么时保存一个新的?
不幸的是答案是肯定的。
您无法将文件中的特定条目加载到RDD对象中,然后只保存这些更改。