1

当我运行 saveAsTextFiles("prefix","postfix"); 对于 JavaDStreams,我发现创建了多个部分文件。

我想了解每个零件文件的含义?

这些文件具有以下命名,/part0000、part0001、part0002

创建用于输出这些文件的基于行的 RDD 平面图的代码

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 个部分文件。

4

1 回答 1

1

DStream 是随着时间的推移 RDD 的集合。每个 RDD 由分布在 Spark worker 集群中的数据分区组成。

在此处输入图像描述

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

DStream.saveAsTextFile 将为间隔创建的 RDD 创建一个文件(bluc 框),每个部分文件对应于由此类 RDD 界定的彩色线段(蓝色 blox 内的彩色线)。

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

当您使用本地文件系统时,这些部分文件将如您所见。

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

于 2014-12-09T08:33:34.860 回答