Что касается чисто Map-Reduce (что это вики относится к), фильтрация на этапе картографического путь:
- у вас нет предварительной обработки перед тем карту-этап
- вы должны уменьшить данные как можно больше, чтобы облегчить нагрузку данных на случайном порядке, и сортировки стадии
- таким образом, карта это место, чтобы применить бизнес-логику фильтрации, насколько вам это нужно
В принципе, поскольку вы только реализуете карту и уменьшаете ее, вы также можете интерпретировать ее как: С учетом карты сцен и уменьшения выполните бизнес-фильтрацию в _map_, поскольку фильтрация в _reduce_ отправит много ненужных данных через кластер.
Надеюсь, что он станет понятнее.
Редактировать после комментария, ссылающегося на искру.
Обратите внимание, что функция map() в искрообразовании API полностью отличается от функции map в map-reduce.
Это просто неудачное совпадение, что их называют такими же, как искровые слои, как потоковый API, по сравнению с сложностью сокращения (или пряжи) карты, которая традиционно имеет функцию map(), которая представляет собой концепцию из функциональное программирование. Эта карта-функция также не имеет ничего по линии эмиссионного шага.
Таким образом: карта в map-reduce (там, где есть нет других функций кроме карты и уменьшения - проверьте приведенные в приведенной ссылке ссылки) должны делать фильтрацию. Обратите внимание, что отображение в map-reduce имеет 0 .. n выходов для каждого отдельного входа.
Карта в искрообразовании или других типах потокового API должна делать просто преобразования из одного типа в другой. (Один вход ведет к одному выходу.)
Карта - это очень общий термин, который может означать несколько вещей. Поскольку это вики для «MapReduce», я предполагаю, что это означает, что при работе с Hadoop этап карты - это нечто большее, чем выполнение функции «map()» в Spark, это полная обработка одной единицы работы , –
Да, это так. Но на самом деле Spark также использует «MapReduce Framework», поэтому мне было интересно, как насчет выполнения бизнес-логики фильтрации через метод Spark map()? –
Это не так, как это работает с Spark. Существует не логическое разделение между большой стадией карты и стадией уменьшения (в отличие от MapReduce, которая требует, чтобы вы сохраняли любой выход на этапе Map, чтобы прочитать его из «Уменьшить»). Исправленное задание содержит набор преобразований, применяемых к распределенному набору данных. Одним из таких преобразований может быть преобразование «фильтр». –