Как будет происходить исполнение в этой искровой программе? - PullRequest
0 голосов
/ 05 июня 2019

Я наткнулся на приведенный ниже пример:

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 голосов
/ 06 июня 2019

first () и take (n) могут быть оптимизированы, если используются сами по себе.

В Spark нет механизма с точки зрения «межпроцессного взаимодействия», позволяющего исполнителям преждевременно завершать свою работу, поскольку продолжающаяся обработкарезультаты будут считаться излишними.Это может привести к разного рода архитектурно-историческим проблемам.

...