Spec-Zone.ru › CakePHP 3.3

Класс 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 optional 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 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 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–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.3/class-Cake.Collection.Iterator.MapReduce.html

Spec-Zone.ru

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