Spec-Zone.ru › CakePHP 3.1

Класс MapReduce

Реализует упрощенную версию популярного алгоритма Map-Reduce. Действует как итератор для исходных переданных данных после обработки каждого результата, обеспечивая прозрачный оберточный слой для результатов, поступающих из любого источника.

Cake\Collection\Iterator\MapReduce реализует IteratorAggregate
Пространство имен: Cake\Collection\Iterator
Расположение: Collection/Iterator/MapReduce.php

Подробное описание методов

__constructsource public

__construct( Traversable $data , callable $mapper , callable $reducer null )

Конструктор

Пример:

Разделение всех уникальных нечетных и четных чисел в массиве

$data = new \ArrayObject([1, 2, 3, 4, 5, 3]);
$mapper = function ($value, $key, $mr) {
    $type = ($value % 2 === 0) ? 'even' : 'odd';
    $mr->emitIntermediate($value, $type);
};

$reducer = function ($numbers, $type, $mr) {
    $mr->emit(array_unique($numbers), $type);
};
$results = new MapReduce($data, $mapper, $reducer);

Предыдущий пример сгенерирует следующий результат:

['odd' => [1, 3, 5], 'even' => [2, 4]]

Параметры

Traversable $data
исходные данные, которые необходимо обработать
callable $mapper
обработчик маппинга. Эта функция будет принимать 3 аргумента. Первый - текущее значение, второй - текущий ключ результата, а третий - экземпляр этого класса, чтобы вы могли вызвать эмиттеры результата.
callable $reducer необязательный null
обработчик редьюсинга. Эта функция будет принимать 3 аргумента. Первый - список значений внутри корзины, второй - имя корзины, созданной на фазе маппинга, а третий - экземпляр этого класса.

_executesource protected

_execute( )

Выполняет фактический алгоритм Map-Reduce. Итеративно обрабатывает исходные данные, вызывая функцию маппинга для каждого элемента, а затем для каждой промежуточной корзины, созданной на фазе маппинга, вызывает функцию редьюсинга.

Исключения

LogicException
если emitIntermediate был вызван, но функция редьюсинга не была предоставлена

emitsource public

emit( mixed $value , string $key null )

Добавляет новую запись в окончательный список результатов и необязательно присваивает ключ этой записи.

Параметры

mixed $value
Значение, которое нужно добавить в окончательный список результатов
string $key необязательный null
необязательный ключ, который нужно присвоить значению

emitIntermediatesource public

emitIntermediate( mixed $value , string $bucket )

Добавляет новую запись в корзину с меткой $key, обычно в результате маппинга одной записи из исходных данных.

Параметры

mixed $value
Сама запись для хранения в корзине
string $bucket
имя корзины, в которую нужно поместить запись

getIteratorsource public

getIterator( )

Возвращает итератор с конечным результатом выполнения фаз Map и Reduce над исходными данными

Возвращаемое значение

ArrayIterator
\ArrayIterator

Реализация

IteratorAggregate::getIterator()

Краткое описание свойств

$_countersource

protected string

Количество элементов, выпущенных на фазе Reduce

$_datasource

protected Traversable

Содержит исходные данные, которые необходимо обработать

$_executedsource

protected boolean

Выполнялась ли процедура Map-Reduce над данными?

false

$_intermediatesource

protected array

Содержит отсортированные результаты, которые были выпущены на фазе маппинга

[]

$_mappersource

protected callable

Вызываемый объект, который будет выполнен для каждой записи в исходных данных

$_reducersource

protected callable

Вызываемый объект, который будет выполнен для каждой промежуточной записи, выпущенной на фазе Map

$_resultsource

protected array

Содержит результаты, выпущенные на фазе редьюсинга

[]

© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.1/class-Cake.Collection.Iterator.MapReduce.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API