#!/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)
}// 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)
?>
這段**的大致意思是:把輸入的每行文字中的單詞找出來,並以」hello 1
world 1″
這樣的形式輸出出來。
和之前寫的php基本沒有什麼不同,對吧,可能稍微讓你感到陌生有兩個地方:
第一行的告訴linux,要用#!/usr/local/php/bin/php這個程式作為以下**的直譯器。寫過linux shell的人應該很熟悉這種寫法了,每個shell指令碼的第一行都是這樣: #!/bin/bash, #!/usr/bin/python#!/usr/local/php/bin/php
php支援多種引數傳入的方法,大家最熟悉的應該是從$_get, $_post超全域性變數裡面取通過web傳遞的引數,次之是從$_server['argv']裡取通過命令列傳入的引數,這裡,採用的是標準輸入stdin它的使用效果是:
使用者通過鍵盤輸入文字
那麼stdout在哪呢?print本身已經就是stdout啦,跟我們以前寫web程式和cli指令碼沒有任何不同。
建立reducer.php檔案,寫入如下**:
#!/usr/local/php/bin/php
<?php
$word2count = array();
// input comes from stdin
while (($line = fgets(stdin)) !== false)
// sort the words lexigraphically
//// this set is not required, we just do it so that our
// final output will look more like the official hadoop
// word count examples
ksort($word2count);
// write the results to stdout (standard output)
foreach ($word2count as $word => $count)
?>
這段**的大意是統計每個單詞出現了多少次數,並以」hello 2
world 1″
這樣的形式輸出
把檔案放入 hadoop 的 dfs 中:
bin/hadoop dfs -put test.log test執行 php 程式處理這些文字(以streaming方式執行php mapreduce程式:):注意:1) input和output目錄是在hdfs上的路徑
bin/hadoop d fs -cat /tmp/out/part-00000
php檔案用什麼軟體編寫
1 eclipsepdt eclipsepdt phpdevelopmenttools 是另一種開源選擇,不需要任何費用。eclipse擁有龐大的開發者社群,致力於開發各種外掛程式,使eclipse具有stormsphp netbeans zendstudio等頂級ide開發功能。2 netbean...
用Zend Encode編寫開發PHP程式
zend encode的工作原理 使用php的人都知道,它是乙個指令碼程式設計工具,用它寫的程式,必須以原始碼的形式放置在web伺服器上,所以我們無法保護自己的源 大家都知道任何乙個指令碼程式的執行效率同具有相同功能的編譯好的二進位制 相比較,它的執行效率都是比較低的。那麼要是有乙個工具能夠幫我們把...
用Zend Encode編寫開發PHP程式
使用php的人都知道,zend encode是乙個指令碼程式設計工具,用它寫的程式,必須以原始碼的形式放置在web伺服器上,所以我們無法保護自己的源 大家都知道任何乙個指令碼程式的執行效率同具有相同功能的編譯好的二進位制 相程式設計客棧比較,它的執行效率都是比較低的。那麼要是有乙個工具能夠幫我們把用...