Maison  >  Article  >  développement back-end  >  PHP peut-il utiliser Hadoop ?

PHP peut-il utiliser Hadoop ?

(*-*)浩
(*-*)浩original
2019-10-14 15:07:164242parcourir

Hadoop est une infrastructure système distribuée développée par la Fondation Apache. Les utilisateurs peuvent développer des programmes distribués sans connaître les détails sous-jacents de la distribution. Exploitez pleinement la puissance des clusters pour le calcul et le stockage à haut débit.

PHP peut-il utiliser Hadoop ?

Bien que Hadoop soit écrit en Java, Hadoop fournit le flux Hadoop. Il fournit une API qui permet aux utilisateurs d'écrire des fonctions de carte et de réduire l'utilisation de n'importe quelle fonction de langage. (Apprentissage recommandé : Tutoriel vidéo PHP)

La clé du flux Hadoop est qu'il utilise le flux standard UNIX comme interface entre le programme et Hadoop. Par conséquent, tant que n'importe quel programme peut lire les données du flux d'entrée standard et écrire des données dans le flux de sortie standard, la fonction map et la fonction de réduction du programme MapReduce peuvent être écrites dans n'importe quel langage via le flux Hadoop.

Par exemple :

bin/hadoop jar contrib/streaming/hadoop-streaming-0.20.203.0.jar -mapper /usr/local/hadoop/mapper.php -reducer /usr/local/hadoop/reducer.php -input test/* -output out4

Le package introduit par le streaming Hadoop : hadoop-streaming-0.20.203.0.jar Il n'y a pas de hadoop-streaming.jar dans le répertoire racine de Hadoop car le streaming est un. contrib Il faut donc le trouver sous contrib, en prenant comme exemple hadoop-0.20.2, il est ici :

-input : Spécifiez le chemin du fichier hdfs d'entrée

-output. : Spécifiez le chemin du fichier hdfs de sortie

-mapper : Spécifiez la fonction map

-reducer : Spécifiez la fonction de réduction

fonction mapper

fichier mapper.php, écrivez Entrez le code suivant :

#!/usr/local/php/bin/php
<?php
$word2count = array();
// input comes from STDIN (standard input)
// You can this code :$stdin = fopen(“php://stdin”, “r”);
while (($line = fgets(STDIN)) !== false) {
    // remove leading and trailing whitespace and lowercase
    $line = strtolower(trim($line));
    // split the line into words while removing any empty string
    $words = preg_split(&#39;/\W/&#39;, $line, 0, PREG_SPLIT_NO_EMPTY);
    // increase counters
    foreach ($words as $word) {
        $word2count[$word] += 1;
    }
}
// write the results to STDOUT (standard output)
// what we output here will be the input for the
// Reduce step, i.e. the input for reducer.py
foreach ($word2count as $word => $count) {
    // tab-delimited
    echo $word, chr(9), $count, PHP_EOL;
}
?>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn