火花:更新文件



我有一个包含字符串对列表的文件。第一对表示 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,但它们是不可变的,因此我无法添加或删除或更改。

执行此操作的最佳做法是什么?每次我想更改某些内容时,我是否需要删除旧文件并保存一个新文件?

RDD 本身不包含任何数据。它仅包含有关如何从加载的数据(即世系)计算新数据的信息。RDD是不可变的,为了更改它所代表的数据 - 您需要从中创建另一个RDD,并应用所需的转换。

执行此操作的最佳做法是什么?我需要删除旧文件吗 并在每次我想更改某些内容时保存一个新的?

不幸的是,答案是肯定的。

不能将文件中的特定条目加载到 RDD 对象中,然后仅保存这些更改。

最新更新