Spark PairRDD 可以选择保存文件。
JavaRDD<String> baseRDD = context.parallelize(Arrays.asList("This", "is", "dummy", "data"));
JavaPairRDD<String, Integer> myPairRDD =
baseRDD.mapToPair(new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String input) throws Exception {
// TODO Auto-generated method stub
return new Tuple2<String, Integer>(input, input.length());
}
});
myPairRDD.saveAsTextFile("path");
Spark 上下文
textfile
仅将数据读取到 JavaRDD。如何直接从源重建 PairRDD?
注:
JavaRDD<String>
并构建 JavaPairRDD
. 但是对于庞大的数据,它需要大量的资源。
最佳答案
如果您不介意结果文件不是人类可读的,您可以将它们保存为目标文件。
保存存档:
myPairRDD.saveAsObjectFile(path);
然后你可以像这样阅读对:
JavaPairRDD.fromJavaRDD(sc.objectFile(path))
编辑:
工作示例:
JavaRDD<String> rdd = sc.parallelize(Lists.newArrayList("1", "2"));
rdd.mapToPair(p -> new Tuple2<>(p, p)).saveAsObjectFile("c://example");
JavaPairRDD<String, String> pairRDD
= JavaPairRDD.fromJavaRDD(sc.objectFile("c://example"));
pairRDD.collect().forEach(System.out::println);
关于apache-spark - 如何从 Spark PairRDD 存储和读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30500141/