Ответ 1
Вся идея кеша заключается в том, что искра не сохраняет результаты в памяти, если вы не скажете об этом. Поэтому, если вы кэшируете последний RDD в цепочке, он сохраняет только результаты этого в памяти. Итак, да, вам нужно кэшировать их отдельно, но имейте в виду, что вам нужно только кэшировать RDD, если вы собираетесь использовать его более одного раза, например:
rdd4.cache()
val v1 = rdd4.lookup("key1")
val v2 = rdd4.lookup("key2")
Если вы не вызываете кеш, в этом случае rdd4 будет пересчитываться для каждого вызова для поиска (или любой другой функции, требующей оценки). Возможно, вы захотите прочитать документ на RDD, это довольно легко понять и объяснить идеи, которые они внесли в отношении того, как работают RDD.