亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么用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

保定市| 锡林浩特市| 鹤壁市| 和田市| 房产| 长治市| 周宁县| 岳阳县| 镇康县| 东乌| 平顺县| 阿克苏市| 吉木乃县| 凉城县| 岳池县| 屏山县| 六枝特区| 黄大仙区| 遂宁市| 绍兴县| 城固县| 靖西县| 巩留县| 桐柏县| 师宗县| 延边| 铅山县| 栾城县| 安福县| 丽江市| 萨嘎县| 罗平县| 囊谦县| 华亭县| 岚皋县| 金堂县| 黄平县| 厦门市| 武强县| 双柏县| 宿迁市|