大資料Hadoop Streaming編程實戰之C++、Php、Python

來源:互聯網
上載者:User

標籤:大資料編程   PHP語言   Python編程   C語言的應用   

Streaming架構允許任何程式語言實現的程式在HadoopMapReduce中使用,方便已有程式向Hadoop平台移植。因此可以說對於hadoop的擴充性意義重大。接下來我們分別使用C++、Php、Python語言實現HadoopWordCount。

  實戰一:C++語言實現Wordcount

  代碼實現:

  1)C++語言實現WordCount中的Mapper,檔案命名為mapper.cpp,以下是詳細代碼

  #include

  #include

  #include

  usingnamespacestd;

  intmain{

  stringkey;

  stringvalue="1";

  while(cin>>key){

  cout<}

  return0;

  }

  2)C++語言實現WordCount中的Reducer,檔案命名為reducer.cpp,以下是詳細代碼

  #include

  #include

  #include

  #include

  usingnamespacestd;

  intmain{

  stringkey;

  stringvalue;

  mapword2count;

  map::iteratorit;

  while(cin>>key){

  cin>>value;

  it=word2count.find(key);

  if(it!=word2count.end){

  (it->second)++;

  }

  else{

  word2count.insert(make_pair(key,1));

  }

  }

  for(it=word2count.begin;it!=word2count.end;++it){

  cout}

  return0;

  }

  測試回合C++實現Wordcount的具體步驟

  1)線上安裝C++

  在Linux環境下,如果沒有安裝C++,需要我們線上安裝C++

  yum-yinstallgcc-c++

  2)對c++檔案編譯,產生可執行檔

  我們通過以下命令將C++程式編譯成可執行檔,然後才能夠運行

  g++-omappermapper.cpp

  g++-oreducerreducer.cpp

  3)本地測試

  叢集運行C++版本的WordCount之前,首先要在Linux本地測試回合,調試成功,確保程式在叢集中正常運行,測試回合命令如下:

  catdjt.txt|./mapper|sort|./reducer

  4)叢集運行

  切換到hadoop安裝目錄下,提交C++版本的WordCount作業,進行單詞統計。

  hadoopjar/usr/java/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

  -Dmapred.reduce.tasks=2

  -mapper"./mapper"

  -reducer"./reducer"

  -filemapper

  -filereducer

  -input/dajiangtai/djt.txt

  -output/dajiangtai/out

  如果最終出現想要的結果,說明C++語言成功實現Wordcount

  實戰二:Php語言實現Wordcount

  代碼實現:

  1)Php語言實現WordCount中的Mapper,檔案命名為wc_mapper.php,以下是詳細代碼

  #!/usr/bin/php

  error_reporting(E_ALL^E_NOTICE);

  $word2count=array;

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

  $line=trim($line);

  $words=preg_split(‘/\W/‘,$line,0,PREG_SPLIT_NO_EMPTY);

  foreach($wordsas$word){

  echo$word,chr(9),"1",PHP_EOL;

  }

  }

  ?>

  2)Php語言實現WordCount中的Reducer,檔案命名為wc_reducer.php,以下是詳細代碼

  #!/usr/bin/php

  error_reporting(E_ALL^E_NOTICE);

  $word2count=array;

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

  $line=trim($line);

  list($word,$count)=explode(chr(9),$line);

  $count=intval($count);

  $word2count[$word]+=$count;

  }

  foreach($word2countas$word=>$count){

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

  }

  ?>

  測試回合Php實現Wordcount的具體步驟

  1)線上安裝Php

  在Linux環境下,如果沒有安裝Php,需要我們線上安裝Php環境

  yum-yinstallphp

  2)本地測試

  叢集運行Php版本的WordCount之前,首先要在Linux本地測試回合,調試成功,確保程式在叢集中正常運行,測試回合命令如下:

  catdjt.txt|phpwc_mapper.php|sort|phpwc_reducer.php

  3)叢集運行

  切換到hadoop安裝目錄下,提交Php版本的WordCount作業,進行單詞統計。

  hadoopjar/usr/java/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

  -Dmapred.reduce.tasks=2

  -mapper"phpwc_mapper.php"

  -reducer"phpwc_reducer.php"

  -filewc_mapper.php

  -filewc_reducer.php

  -input/dajiangtai/djt.txt

  -output/dajiangtai/out

  如果最終出現想要的結果,說明Php語言成功實現Wordcount

  實戰三:Python語言實現Wordcount

  代碼實現:

  1)Python語言實現WordCount中的Mapper,檔案命名為Mapper.py,以下是詳細代碼

  #!/usr/java/hadoop/envpython

  importsys

  word2count={}

  forlineinsys.stdin:

  line=line.strip

  words=filter(lambdaword:word,line.split)

  forwordinwords:

  print‘%s\t%s‘%(word,1)

  2)Python語言實現WordCount中的Reducer,檔案命名為Reducer.py,以下是詳細代碼

  #!/usr/java/hadoop/envpython

  fromoperatorimportitemgetter

  importsys

  word2count={}

  forlineinsys.stdin:

  line=line.strip

  word,count=line.split

  try:

  count=int(count)

  word2count[word]=word2count.get(word,0)+count

  exceptValueError:

  pass

  sorted_word2count=sorted(word2count.items,key=itemgetter(0))

  forword,countinsorted_word2count:

  print‘%s\t%s‘%(word,count)

  測試回合Python實現Wordcount的具體步驟

  1)線上安裝Python

  在Linux環境下,如果沒有安裝Python,需要我們線上安裝Python環境

  yum-yinstallpython27

  2)本地測試

  叢集運行Python版本的WordCount之前,首先要在Linux本地測試回合,調試成功,確保程式在叢集中正常運行,測試回合命令如下:

  catdjt.txt|pythonMapper.py|sort|pythonReducer.py

  3)叢集運行

  切換到hadoop安裝目錄下,提交Python版本的WordCount作業,進行單詞統計。

  hadoopjar/usr/java/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

  -Dmapred.reduce.tasks=2

  -mapper"pythonMapper.py"

  -reducer"pythonReducer.py"

  -fileMapper.py

  -fileReducer.py

  -input/dajiangtai/djt.txt

  -output/dajiangtai/out

  如果最終出現想要的結果,說明Python語言成功實現Wordcount

大資料Hadoop Streaming編程實戰之C++、Php、Python

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.