Всегда ли Spark считывает данные при возникновении действия - PullRequest
1 голос
/ 11 марта 2020

Я новичок в Spark и узнал, что есть трансформации и действия. Преобразования возвращают новые rdds и кадры данных, и действия над ними выполняют операции. Если действие не вызывается, никакие преобразования не выполняются. Преобразования - это всего лишь шаги в родословной, если не требуется никаких действий. Итак, когда я читаю фрейм данных, это тоже трансформация, и если после его чтения я вызываю два действия на одном и том же фрейме данных, читается ли он дважды или читается только один раз, а затем выполняются над ними действия?

df = ss.read.csv('test.csv')
df.count()
df.take(5)

1 Ответ

2 голосов
/ 11 марта 2020

Действие вызывает выполнение в целом, читается по мере того, как вы заявляете. Это не случай операций, а фактическое выполнение - за исключением нескольких исключений задач, которые необходимо выполнить.

Если вы не кэшировали / сохранили данные, вы будете читать данные более одного раза, если только некоторые не пропущены происходят действия.

Может быть оптимизирован отложенный запуск и код средней линии.

Оптимизированы такие вещи, как take (n). Шоу также имеет свои особенности.

...