为什么fv中的env.readTextFile(...)。first(10).print读取所有数据?

时间:2016-05-19 18:39:40

标签: apache-flink

当我只想在Apache Spark中获取前N条记录时,我使用:

moment.locale('es');
$('#datePicker').daterangepicker();

哪个会快速返回并给我前10行文字。 当我在Apache Flink中做类似的事情时:

sc.textFile(path_to_files).take(10)

在返回结果之前,它将完全读取所有文件。那是为什么?

1 个答案:

答案 0 :(得分:4)

Flink使用流水线(基于流)的执行模型。因此,在启动程序时,源只是开始消耗数据,而不知道下游运算符。因此,所有数据都被读取,first(10)只返回10条记录。

由于流水线执行模型,很难应用优化来尽早停止源。想象一下,它们之间可能存在过滤器,聚合等,因此源无法知道必须读取多少数据才能最终获得10个最终结果记录。