Везде в Google ключевое различие между Spark и Hadoop MapReduce указано в подходе к обработке: Spark может делать это в памяти, в то время как Hadoop MapReduce должен читать и записывать на диск. Похоже, я понял, но я хотел бы подтвердить это на примере.
Рассмотрим пример подсчета слов:
val text = sc.textFile("mytextfile.txt")
val counts = text.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
counts.collect
Мое понимание:
В случае Spark, после того как строки разделены на "", вывод будет сохранен в памяти. Аналогично с функциями отображения и уменьшения. Я полагаю, что то же самое верно для обработки между разделами.
В случае MapReduce будут ли каждый промежуточный результат (например, слова после разделения / отображения / уменьшения) сохраняться на диске, то есть HDFS, что делает его медленнее по сравнению со Spark? Нет ли способа сохранить их в памяти? То же самое в случае результатов разбиения?