这个Spark程序将如何执行?

时间:2019-06-05 15:01:46

标签: apache-spark pyspark rdd

我遇到了以下示例:

lines = sc.textFile("some_file.txt") //line_1

lineswithFriday = lines.filter(lambda line: line.startwith("Friday")) //line_2

lineswithFriday.first(); //line_3

它也说

  

spark仅扫描文件,直到找到以以下内容开头的第一行   friday。它不需要遍历整个文件。

我的问题是:这是否意味着spark将在内存中逐行加载每一行,看看它是否以Friday开头,如果是,则在那里停止?

line_1基于核心和输入块创建了三个分区。 line_2将通过每个内核上的单独工作线程进行计算。 在line_3上,只要有工人找到以Friday开头的行,它就会停在那里吗?

1 个答案:

答案 0 :(得分:0)

如果单独使用

first()和take(n)可以进行优化。

Spark中没有“进程间通信”机制,允许执行者过早终止,因为继续处理结果将被认为是多余的。从结构上来讲,这将导致各种问题。