Spec-Zone.ru › CakePHP 3.7

Класс 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|null

    Вызываемый объект, который будет выполняться для каждой промежуточной записи, выводимой на этапе 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 аргумента. Первый — текущее значение, второй — текущий ключ результата, а третий — экземпляр этого класса, так что вы можете вызывать эмиттеры результата.

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

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

_execute()source protected

_execute( )

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

Исключения

LogicException

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


emit()source public

emit( mixed $val , string|null $key = null )

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

Параметры

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

emitIntermediate()source public

emitIntermediate( mixed $val , string $bucket )

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

Параметры

mixed $val
Сама запись для хранения в пакете
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 вызываемый объект

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

$_reducersource

protected вызываемый объект|null

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

$_resultsource

protected массив

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

[]

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

Spec-Zone.ru

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