Spark против Hadoop с этим простым примером? - PullRequest
0 голосов
/ 12 мая 2019

Везде в 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? Нет ли способа сохранить их в памяти? То же самое в случае результатов разбиения?

1 Ответ

0 голосов
/ 12 мая 2019

Да, вы правы.

Результаты промежуточного RDD (Resilient Distributed Dataset) SPARK хранятся в памяти, и, следовательно, задержка намного ниже, а пропускная способность задания выше. СДР имеют разделы, порции данных, такие как MR. SPARK также предлагает итеративную обработку, что также является ключевым моментом для рассмотрения.

MR, конечно, имеет Combiner, чтобы немного облегчить боль.

Но SPARK гораздо проще в использовании со Scala или pyspark.

Я бы больше не беспокоился о МР - в общем.

Вот отличная статья на SPARK BTW: https://medium.com/@goyalsaurabh66/spark-basics-rdds-stages-tasks-and-dag-8da0f52f0454

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...