当我只想在Apache Spark中获取前N条记录时,我使用:
moment.locale('es');
$('#datePicker').daterangepicker();
哪个会快速返回并给我前10行文字。 当我在Apache Flink中做类似的事情时:
sc.textFile(path_to_files).take(10)
在返回结果之前,它将完全读取所有文件。那是为什么?
答案 0 :(得分:4)
Flink使用流水线(基于流)的执行模型。因此,在启动程序时,源只是开始消耗数据,而不知道下游运算符。因此,所有数据都被读取,first(10)
只返回10条记录。
由于流水线执行模型,很难应用优化来尽早停止源。想象一下,它们之间可能存在过滤器,聚合等,因此源无法知道必须读取多少数据才能最终获得10个最终结果记录。