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))
这就是你要找的吗?
鼓起勇气:)
我将 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))
这就是你要找的吗?
鼓起勇气:)