91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用PHP寫Hadoop的MapReduce程序

發布時間:2021-08-25 10:03:31 來源:億速云 閱讀:144 作者:chen 欄目:云計算

這篇文章主要介紹“怎么用PHP寫Hadoop的MapReduce程序”,在日常操作中,相信很多人在怎么用PHP寫Hadoop的MapReduce程序問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用PHP寫Hadoop的MapReduce程序”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Hadoop流

雖然Hadoop是用java寫的,但是Hadoop提供了Hadoop流,Hadoop流提供一個API, 允許用戶使用任何語言編寫map函數和reduce函數.
Hadoop流動關鍵是,它使用UNIX標準流作為程序與Hadoop之間的接口。因此,任何程序只要可以從標準輸入流中讀取數據,并且可以把數據寫入標準輸出流中,那么就可以通過Hadoop流使用任何語言編寫MapReduce程序的map函數和reduce函數。
例 如: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-streaming.jar的,因為 streaming是一個contrib,所以要去contrib下面找,以hadoop-0.20.2為例,它在這里:
-input:指明輸入hdfs文件的路徑
-output:指明輸出hdfs文件的路徑
-mapper:指明map函數
-reducer:指明reduce函數

mapper函數

mapper.php文件,寫入如下代碼:

[php]  

  1. #!/usr/local/php/bin/php  

  2. <?php  

  3. $word2count = array();  

  4. // input comes from STDIN (standard input)   

  5. // You can this code :$stdin = fopen(“php://stdin”, “r”);   

  6. while (($line = fgets(STDIN)) !== false) {  

  7.     // remove leading and trailing whitespace and lowercase   

  8.     $line = strtolower(trim($line));  

  9.     // split the line into words while removing any empty string   

  10.     $words = preg_split('/\W/', $line, 0, PREG_SPLIT_NO_EMPTY);  

  11.     // increase counters   

  12.     foreach ($words as $word) {  

  13.         $word2count[$word] += 1;  

  14.     }  

  15. }  

  16. // write the results to STDOUT (standard output)   

  17. // what we output here will be the input for the   

  18. // Reduce step, i.e. the input for reducer.py   

  19. foreach ($word2count as $word => $count) {  

  20.     // tab-delimited   

  21.     echo $word, chr(9), $count, PHP_EOL;  

  22. }  

  23. ?>  

這段代碼的大致意思是:把輸入的每行文本中的單詞找出來,并以”

             hello    1
             world  1″

這樣的形式輸出出來。

和之前寫的PHP基本沒有什么不同,對吧,可能稍微讓你感到陌生有兩個地方:

PHP作為可執行程序

第一行的

[php]  

  1. #!/usr/local/php/bin/php  

告訴linux,要用#!/usr/local/php/bin/php這個程序作為以下代碼的解釋器。寫過linux shell的人應該很熟悉這種寫法了,每個shell腳本的第一行都是這樣: #!/bin/bash, #!/usr/bin/python

有了這一行,保存好這個文件以后,就可以像這樣直接把mapper.php當作cat, grep一樣的命令執行了:./mapper.php

到此,關于“怎么用PHP寫Hadoop的MapReduce程序”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绿春县| 左云县| 贡山| 志丹县| 堆龙德庆县| 芷江| 丹棱县| 宜丰县| 高雄县| 县级市| 长丰县| 彰化县| 通州市| 高要市| 治多县| 泽州县| 七台河市| 绥宁县| 萨嘎县| 泽库县| 镶黄旗| 阳高县| 台南县| 井研县| 淅川县| 武平县| 鞍山市| 成安县| 芒康县| 营山县| 朝阳市| 永川市| 克东县| 洛隆县| 响水县| 青川县| 平泉县| 新宁县| 巫山县| 武威市| 敖汉旗|