header RDD 中的文本文件

header of a text file in RDD

我将 spark 与 java 一起使用,我有一个包含以下元素的 .csv 文件:

Id,Name,Color,Age
1,Titi,Jaune,5
2,Médor,Noir,10
3,Pitié,Noir,5

当我创建我的 pairRDD 时,我想去掉 header 所以它看起来像:

(1,Titi,Jaune,5)
(2,Médor,Noir,10)
(3,Pitié,Noir,5)

我不想使用 filter() 函数,因为它会处理所有行而且效率很低。

计算后,我想再次将我的 pairedRDD 保存为文本文件,在这种情况下,我想将 header 返回到文件顶部。我该怎么做?

还有一件事,当我使用以下代码从 javaRDD

创建一个 pairRDD 时
public Tuple2<Integer, String> call(String x) {
     return new Tuple2(x.split(",")[0], x);
}

java RDD 中的元组如下所示: (1,Titi,Jaune,5) 转换为 pairRDD 后,看起来像 ((1),(1,Titi,Jaune,5)),例如元组的键重复,为什么会这样?我不希望密钥重复。

跳过header:

可以使用subtract方法删除rdd的第一条记录:

String headerSTR = "Id,Name,Color,Age";
JavaRDD<String> header = jsc.parallelize(Arrays.asList(headerSTR));
yourRDD = yourRDD.subtract(header);

为了避免元组中的重复键:

你可以轻松地从 x 中减去 id:

public Tuple2<Integer, String> call(String x) {
    String strs = x.split(",");
    return new Tuple2(strs[0], x.replaceFirst(strs[0]+",", ""));
}

它会给你这样的东西:((1),(Titi,Jaune,5))

这就是你要找的吗?

鼓起勇气:)