我遇到了以下示例:
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
开头的行,它就会停在那里吗?
答案 0 :(得分:0)
first()和take(n)可以进行优化。
Spark中没有“进程间通信”机制,允许执行者过早终止,因为继续处理结果将被认为是多余的。从结构上来讲,这将导致各种问题。