我是Spark的新手,我使用sc.wholeTextFiles(path);
来读取所有文件,函数返回JavaPairRDD<String, String>
,而RDD的密钥是每个文件的完整路径,但我想要的是更改密钥到文件的名称。
他们的东西是mapValues(func)
,但是用于钥匙。
答案 0 :(得分:3)
这里的关键假设是JavaPairRDD<String, String>
与JavaRDD<Tuple2<String, String>>
相同。
换句话说,JavaPairRDD
只是元组的RDD
。因此,您可以使用公共map
来修改元组键,并保持值不受影响。
JavaPairRDD<String, String> input = sc.wholeTextFiles(path);
input.map(new Function<Tuple2<String,String>, Tuple2<String,String>>() {
@Override
public Tuple2<String, String> call(Tuple2<String, String> tuple) {
return new Tuple2<>(convertToFilename(tuple._1()), tuple._2());
}
});