您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么用PHP寫Hadoop的MapReduce程序”,在日常操作中,相信很多人在怎么用PHP寫Hadoop的MapReduce程序問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么用PHP寫Hadoop的MapReduce程序”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
雖然Hadoop是用java寫的,但是Hadoop提供了Hadoop流,Hadoop流提供一個(gè)API, 允許用戶使用任何語(yǔ)言編寫map函數(shù)和reduce函數(shù).
Hadoop流動(dòng)關(guān)鍵是,它使用UNIX標(biāo)準(zhǔn)流作為程序與Hadoop之間的接口。因此,任何程序只要可以從標(biāo)準(zhǔn)輸入流中讀取數(shù)據(jù),并且可以把數(shù)據(jù)寫入標(biāo)準(zhǔn)輸出流中,那么就可以通過(guò)Hadoop流使用任何語(yǔ)言編寫MapReduce程序的map函數(shù)和reduce函數(shù)。
例 如: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根目錄下是沒(méi)有hadoop-streaming.jar的,因?yàn)?streaming是一個(gè)contrib,所以要去contrib下面找,以hadoop-0.20.2為例,它在這里:
-input:指明輸入hdfs文件的路徑
-output:指明輸出hdfs文件的路徑
-mapper:指明map函數(shù)
-reducer:指明reduce函數(shù)
mapper.php文件,寫入如下代碼:
[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('/\W/', $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;
}
?>
這段代碼的大致意思是:把輸入的每行文本中的單詞找出來(lái),并以”
hello 1
world 1″
這樣的形式輸出出來(lái)。
和之前寫的PHP基本沒(méi)有什么不同,對(duì)吧,可能稍微讓你感到陌生有兩個(gè)地方:
第一行的
[php]
告訴linux,要用#!/usr/local/php/bin/php這個(gè)程序作為以下代碼的解釋器。寫過(guò)linux shell的人應(yīng)該很熟悉這種寫法了,每個(gè)shell腳本的第一行都是這樣: #!/bin/bash, #!/usr/bin/python
#!/usr/local/php/bin/php
有了這一行,保存好這個(gè)文件以后,就可以像這樣直接把mapper.php當(dāng)作cat, grep一樣的命令執(zhí)行了:./mapper.php
到此,關(guān)于“怎么用PHP寫Hadoop的MapReduce程序”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。