Spec-Zone.ru › CakePHP 3.4

Класс MapReduce

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

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

Резюме свойств

  • $_counter protected
    integer
    Количество элементов, выпущенных на фазе Reduce
  • $_data protected
    Traversable|null
    Содержит исходные данные, которые необходимо обработать
  • $_executed protected
    boolean
    Выполнялась ли процедура Map-Reduce над данными уже
  • $_intermediate protected
    array

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

  • $_mapper protected
    callable
    Вызываемый элемент, который будет выполнен для каждой записи в исходных данных
  • $_reducer protected
    callable

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

  • $_result protected
    array
    Содержит результаты, выпущенные на фазе reduce

Резюме методов

  • __construct() public
    Конструктор
  • _execute() protected

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

  • emit() public

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

  • emitIntermediate() public

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

  • getIterator() public

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

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

__construct()source 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

обратный вызов map. Эта функция будет принимать 3 аргумента. Первый — текущее значение, второй — текущий ключ результата, третий — экземпляр этого класса, так что вы сможете вызывать emitters результата.

callable $reducer optional null

обратный вызов reduce. Эта функция будет принимать 3 аргумента. Первый — список значений внутри контейнера, второй — имя контейнера, созданного на фазе mapping, третий — экземпляр этого класса.

_execute()source protected

_execute( )

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

Возможные исключения

LogicException

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


emit()source public

emit( mixed $value , string|null $key null )

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

Параметры

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

emitIntermediate()source public

emitIntermediate( mixed $value , string $bucket )

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

Параметры

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

getIterator()source public

getIterator( )

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

Возвращает

ArrayIterator

Реализация

IteratorAggregate::getIterator()

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

$_countersource

protected целое число

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

$_datasource

protected Traversable|null

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

$_executedsource

protected boolean

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

false

$_intermediatesource

protected массив

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

[]

$_mappersource

protected callable

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

$_reducersource

protected callable

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

$_resultsource

protected массив

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

[]

© 2005–2017 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.
https://api.cakephp.org/3.4/class-Cake.Collection.Iterator.MapReduce.html

Spec-Zone.ru

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