如何在spark中映射JavaPairRDD的键?

时间:2016-05-05 09:54:38

标签: java apache-spark

我是Spark的新手,我使用sc.wholeTextFiles(path);来读取所有文件,函数返回JavaPairRDD<String, String>,而RDD的密钥是每个文件的完整路径,但我想要的是更改密钥到文件的名称。 他们的东西是mapValues(func),但是用于钥匙。

1 个答案:

答案 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());
  }
});