如何在spark中映射JavaPairRDD的键?

我是Spark的sc.wholeTextFiles(path); ,我使用过sc.wholeTextFiles(path); 要读取所有文件,该函数返回JavaPairRDD ,RDD的键是每个文件的完整路径,但我想要的是将密钥更改为文件名。 他们的东西是mapValues(func)但是用于键。

这里的关键假设是JavaPairRDDJavaRDD>

换句话说, JavaPairRDD只是元组的RDD 。 因此,您可以使用公共map来仅修改元组键并保持值不变。

 JavaPairRDD input = sc.wholeTextFiles(path); input.map(new Function, Tuple2>() { @Override public Tuple2 call(Tuple2 tuple) { return new Tuple2<>(convertToFilename(tuple._1()), tuple._2()); } });