Heim  >  Artikel  >  Backend-Entwicklung  >  Kann PHP Hadoop verwenden?

Kann PHP Hadoop verwenden?

(*-*)浩
(*-*)浩Original
2019-10-14 15:07:164242Durchsuche

Hadoop ist eine von der Apache Foundation entwickelte verteilte Systeminfrastruktur. Benutzer können verteilte Programme entwickeln, ohne die zugrunde liegenden Details der Verteilung zu kennen. Nutzen Sie die Leistungsfähigkeit von Clustern für Hochgeschwindigkeits-Computing und -Speicherung voll aus.

Kann PHP Hadoop verwenden?

Obwohl Hadoop in Java geschrieben ist, bietet Hadoop Stream eine API, die es Benutzern ermöglicht, Kartenfunktionen zu schreiben und in jeder Sprache zu reduzieren. (Empfohlenes Lernen: PHP-Video-Tutorial)

Der Schlüssel zum Hadoop-Flow liegt darin, dass er den UNIX-Standardflow als Schnittstelle zwischen dem Programm und Hadoop verwendet. Solange daher jedes Programm Daten aus dem Standardeingabestream lesen und Daten in den Standardausgabestream schreiben kann, können die Kartenfunktion und die Reduzierungsfunktion des MapReduce-Programms über den Hadoop-Stream in jeder Sprache geschrieben werden.

Zum Beispiel:

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

Das durch Hadoop-Streaming eingeführte Paket: hadoop-streaming-0.20.203.0.jar. Es gibt kein hadoop-streaming.jar im Hadoop-Stammverzeichnis, da Streaming ein ist contrib. Sie müssen es also unter contrib finden, am Beispiel von hadoop-0.20.2, es ist hier:

-input: Geben Sie den Pfad zur Eingabe-HDFS-Datei an

-output : Geben Sie den Pfad zur HDFS-Ausgabedatei an

-mapper: Geben Sie die Kartenfunktion an

-reducer: Geben Sie die Reduzierungsfunktion an

Mapper-Funktion

Mapper.php-Datei, schreiben Sie den folgenden Code:

#!/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;
}
?>

Das obige ist der detaillierte Inhalt vonKann PHP Hadoop verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn