Spec-Zone.ru › CakePHP 3.6

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

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

_execute()source protected

_execute( )

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

Исключения

LogicException

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


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 integer

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

$_datasource

protected Traversable|null

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

$_executedsource

protected boolean

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

false

$_intermediatesource

protected array

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

[]

$_mappersource

protected callable

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

$_reducersource

protected callable|null

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

$_resultsource

protected array

Содержит результаты, выведенные на фазе 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.6/class-Cake.Collection.Iterator.MapReduce.html

Spec-Zone.ru

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