当我运行saveAsTextFiles(“prefix”,“postfix”)时;对于JavaDStreams,我发现创建了多个零件文件。
我想了解每个零件文件的含义是什么?
文件具有以下命名,/ part0000,part0001,part0002
创建基于行的RDD flatmap的代码,用于输出这些文件
JavaDStream<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterable<String> call(String x) {
return Lists.newArrayList(NEWSPACE.split(x));
}
});
我的假设是,这是在每个RDD = 1行创建一个RDD的DStream,因此应该创建1个部分文件。
答案 0 :(得分:1)
DStream是一段时间内的RDD集合。每个RDD都由分布在Spark工作者群集中的数据分区组成。
在此图中,每条彩色线代表一条数据流。当它在rdd中有界时,它是RDD的一个分区。 RDD由每个时间间隔收集的数据组成,此处用蓝色框表示。
DStream.saveAsTextFile将为间隔(bluc box)创建的RDD创建一个文件,每个part-file对应于由这样的RDD(蓝色blox中的彩色线条)限定的彩色线条。
在分布式文件系统中,如hdfs,fs将抽象出分区,为您提供单个逻辑文件,或每个RDD 1个文件。
当您使用本地文件系统时,这些部分文件将显示为您所看到的。
(*)图片致谢:Andy Petrella和Gerard Maas(我)在Devoxx 2014上的Spark演示