Spark Streaming saveastextfile操作,什么是part0000文件

时间:2014-12-08 22:03:01

标签: java apache-spark spark-streaming

当我运行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个部分文件。

1 个答案:

答案 0 :(得分:1)

DStream是一段时间内的RDD集合。每个RDD都由分布在Spark工作者群集中的数据分区组成。

enter image description here

在此图中,每条彩色线代表一条数据流。当它在rdd中有界时,它是RDD的一个分区。 RDD由每个时间间隔收集的数据组成,此处用蓝色框表示。

DStream.saveAsTextFile将为间隔(bluc box)创建的RDD创建一个文件,每个part-file对应于由这样的RDD(蓝色blox中的彩色线条)限定的彩色线条。

在分布式文件系统中,如hdfs,fs将抽象出分区,为您提供单个逻辑文件,或每个RDD 1个文件。

当您使用本地文件系统时,这些部分文件将显示为您所看到的。

(*)图片致谢:Andy Petrella和Gerard Maas(我)在Devoxx 2014上的Spark演示