PHP code example of jotaelesalinas / php-mapreduce
1. Go to this page and download the library: Download jotaelesalinas/php-mapreduce library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jotaelesalinas / php-mapreduce example snippets
$source = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$mapper = fn($item) => $item * 2;
$reducer = fn($carry, $item) => ($carry ?? 0) + $item;
$result = MapReduce\MapReduce::create()
->setInput($source)
->setMapper($mapper)
->setReducer($reducer)
->run();
print_r($result);
$odd_numbers = fn($item) => $item % 2 === 0;
$greater_than_10 = fn($item) => $item > 10;
$result = MapReduce\MapReduce::create([
"input" => $source,
"mapper" => $mapper,
"reducer" => $reducer,
])
// only odd numbers are passed to the mapper function
->setPreFilter($odd_numbers)
// only numbers greater than 10 are passed to the reducer function
->setPostFilter($greater_than_10)
->run();
print_r($result);
$source = [
[ "first_name" => "Susanna", "last_name" => "Connor", "member" => "y", "age" => 20],
[ "first_name" => "Adrian", "last_name" => "Smith", "member" => "n", "age" => 22],
[ "first_name" => "Mike", "last_name" => "Mendoza", "member" => "n", "age" => 24],
[ "first_name" => "Linda", "last_name" => "Duguin", "member" => "y", "age" => 26],
[ "first_name" => "Bob", "last_name" => "Svenson", "member" => "n", "age" => 28],
[ "first_name" => "Nancy", "last_name" => "Potier", "member" => "y", "age" => 30],
[ "first_name" => "Pete", "last_name" => "Adams", "member" => "n", "age" => 32],
[ "first_name" => "Susana", "last_name" => "Zommers", "member" => "y", "age" => 34],
[ "first_name" => "Adrian", "last_name" => "Deville", "member" => "n", "age" => 36],
[ "first_name" => "Mike", "last_name" => "Cole", "member" => "n", "age" => 38],
[ "first_name" => "Mike", "last_name" => "Angus", "member" => "n", "age" => 40],
];
// mapper does nothing
$mapper = fn($x) => $x;
// number of persons and sum of ages
$reduceAgeSum = function ($carry, $item) {
if (is_null($carry)) {
return [
'count' => 1,
'age_sum' => $item['age'],
];
}
$count = $carry['count'] + 1;
$age_sum = $carry['age_sum'] + $item['age'];
return compact('count', 'age_sum');
};
$result = MapReduce\MapReduce::create([
"input" => $source,
"mapper" => $mapper,
"reducer" => $reduceAgeSum,
])
// group by field 'member'
->setGroupBy('member')
->run();
print_r($result);
$closestTen = fn($x) => floor($x['age'] / 10) * 10;
$result = MapReduce\MapReduce::create([
"input" => $source,
"mapper" => $mapper,
"reducer" => $reduceAgeSum,
])
// group by age ranges of 10
->setGroupBy($closestTen)
->run();
print_r($result);
$result = MapReduce\MapReduce::create([
"mapper" => $mapper,
"reducer" => $reducer,
])
->setInput(csvReadGenerator('myfile.csv'))
->run();
$result = MapReduce\MapReduce::create([
"mapper" => $mapper,
"reducer" => $reducer,
])
->setInput($arrayData, csvReadGenerator('myfile.csv'))
->run();
$result = MapReduce\MapReduce::create([
"mapper" => $mapper,
"reducer" => $reducer,
])
->setOutput(csvWriteGenerator('results.csv'))
->run();
$result = MapReduce\MapReduce::create([
"mapper" => $mapper,
"reducer" => $reducer,
])
->setOutput(csvWriteGenerator('results.csv'), consoleGenerator())
->run();
bash
$ composer