Spec-Zone.ru › CakePHP 3.8

Класс 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. Итерирует исходные данные, вызывает функцию маппера для каждого элемента, затем для каждого промежуточного набора данных, созданного на фазе Map, вызывает функцию редьюсера.

  • emit() public

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

  • emitIntermediate() public

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

  • 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
исходные данные для обработки
вызываемый $mapper

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

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

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

_execute()source protected

_execute( )

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

Исключения

LogicException

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


emit()source public

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

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

Параметры

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

emitIntermediate()source public

emitIntermediate( mixed $val , string $bucket )

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

Параметры

смешанный $val
Запись для хранения в наборе данных
строка $bucket
имя набора данных, куда нужно поместить запись

getIterator()source public

getIterator( )

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

Возвращаемое значение

ArrayIterator

Реализация

IteratorAggregate::getIterator()

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

$_countersource

protected целое число

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

$_datasource

protected Traversable|null

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

$_executedsource

protected логическое значение

Выполнялась ли операция 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.8/class-Cake.Collection.Iterator.MapReduce.html

Spec-Zone.ru

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