ホームページ >バックエンド開発 >PHPの問題 >PHPはHadoopを使用できますか?

PHPはHadoopを使用できますか?

(*-*)浩
(*-*)浩オリジナル
2019-10-14 15:07:164390ブラウズ

Hadoop は、Apache Foundation によって開発された分散システム インフラストラクチャであり、ユーザーは分散の基礎となる詳細を理解していなくても分散プログラムを開発できます。高速コンピューティングとストレージのためにクラスターの力を最大限に活用します。

PHPはHadoopを使用できますか?

Hadoop は Java で書かれていますが、Hadoop は Hadoop ストリームを提供します。Hadoop ストリームは、ユーザーがマップ関数を記述し、任意の言語を使用して削減できるようにする API を提供します。 (推奨される学習: PHP ビデオ チュートリアル )

Hadoop フローの重要な点は、プログラムと Hadoop の間のインターフェイスとして UNIX 標準フローを使用することです。したがって、標準入力ストリームからデータを読み取り、標準出力ストリームにデータを書き込むことができるプログラムであれば、MapReduce プログラムのマップ関数とリデュース関数は、Hadoop ストリームを介して任意の言語で記述することができます。

例:

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

Hadoop ストリーミングによって導入されたパッケージ: hadoop-streaming-0.20.203.0.jar ストリーミングは Hadoop ルート ディレクトリにありません。 hadoop-0.20.2 を例にとると、これは次のとおりです:

-input: 入力 HDF ファイルへのパスを指定します

-output :出力hdfsファイルへのパスを指定します

-mapper:map関数を指定します

-reducer:reduce関数を指定します

mapper関数

mapper.php ファイルに次のコードを入力します:

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

以上がPHPはHadoopを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。