шаблоны проектирования hadoop mapreduce.pptVIP

  • 0
  • 0
  • 约6.42千字
  • 约 32页
  • 2017-09-06 发布于天津
  • 举报

шаблоны проектирования hadoop mapreduce.ppt

шаблоны проектирования hadoop mapreduce

Задача Подсчитать количество вхождений всех слов в наборе документов {d1,d2,…} Типичное решение In-mapper combining In-mapper combining Недостатки паттерна: Угроза масштабируемости: надо хранить результаты промежуточных вычислений, пока mapper не обработает все поданные на него данные. Наличие внутренних состояний внутри mapper создает возможность появления ошибок связанных с порядком выполнения. Одно из решений 1): делать emit после каждых n обработанных пар ключ, значение In-mapper combining Combiner в MapReduce - оптимизационная опция, поэтому корректность выполнения алгоритма не должна от него зависеть. Reducer должен принимать на вход пары ключ,значение того же типа что и пары испускаемые mapper’ом. Задача Рассмотрим пример, в котором обыграны два этих правила. Есть много .log документов, хранящих данные вида user_id, SpentTime. Нужно посчитать среднее время пребывания на сайте. Учесть правило: Простое решение Неправильное решение Неправильное решение Правильное решение Еще одно решение “Pairs” и “stripes” Учебник Python 3 покупают вместе с KR, но никогда наоборот. Учебник SICP не покупают вместе с “Мечты роботов” Азимова. Нужно построить матрицу совместных покупок с помощью паттерна pairs или с помощью паттерна stripes. “Pairs” и “stripes” Pairs: “Pairs” и “stripes” Stripes: “Pairs” и “stripes” Очевидно, что “pairs” генерирует намного больше пар ключ,значение, чем “stripes”. Реализация “stripes” компактна, но сложна. Реализация “stripes” требует временного хранения данных. Combiner в “stripes” имеет больше возможностей для выполнения локальной агрегации. “Pairs” и “stripes” “Pairs” и “stripes” Order inversion Вернемся к построению матрицы совместных покупок: некоторые товары покупают гораздо чаще других. Следовательно абсолютные значения нерепрезентативны, поэтому перейдем к частотам: Order inversion Возникает проблема: как подсчитать знаменатель? С помощью шаблона “Stripes”: в reducer попадают пары term, Stripe[term1,term2,…], поэтому м

文档评论(0)

1亿VIP精品文档

相关文档