Spec-Zone.ru › CakePHP 3.2

Класс MapReduce

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

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

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

  • $_counter protected
    string
    Количество элементов, выпущенных на стадии Reduce
  • $_data protected
    Traversable
    Содержит исходные данные, которые необходимо обработать
  • $_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. Это означает перебор исходных данных и вызов функции mapper для каждого из них, а затем для каждого промежуточного контейнера, созданного на фазе 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

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

callable $reducer необязательный null

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

_execute()source protected

_execute( )

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

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

LogicException

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


emit()source public

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

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

Параметры

mixed $value
Значение, которое нужно добавить в окончательный список результатов
string|null $key необязательный 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 string

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

$_datasource

protected Traversable

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

$_executedsource

protected boolean

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

false

$_intermediatesource

protected array

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

[]

$_mappersource

protected callable

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

$_reducersource

protected callable

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

$_resultsource

protected array

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

[]

© 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.2/class-Cake.Collection.Iterator.MapReduce.html

Spec-Zone.ru

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