使用SAS实现HADOOP Map/Reduce程序-wordcount

使用SAS实现HADOOP MAPReduce程序 


文章灵感来自如下文章,该文描述来如何用python实现mapreduc程序
http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/




发现其是利用hadoop-streaming-2.4.0.jar来对hadoop上的数据并行分布式流入到linux的标准输入stdin输出stdout来实现对hadoop数据的读取和写入,由于python和SAS都是脚本语言,因此理论上用SAS实现HADOOP Mapreduce程序也是没有问题的


那首先碰到的问题就是,在SAS中如何读取标准输入和输出呢?
回答该问题很简单,SAS在Linux平台内嵌了2个系统文件,直接通过类似下面使用就可以获得标准输入输出,如下
data _null_;
infile stdin;
file stdout;
input;
put _infile_;
run;
把上面行保存为mapper.sas文件,在linux中通过下面命令调用就可以看到效果
echo test1 test2|.../SASHome/SASFoundation/9.4/sas mapper.sas
可以看出会在控制台上输出test1 test2字眼



言归正传,下面利用SAS实现wordcount功能的mapreduce程序
1.mapper.sas程序,用于实现对文本内容的map
data _null_;
infile stdin;
file stdout;
input;
count=countw(_infile_," ");
do i=1 to count;
       word=scan(_infile_,i," ");
       put word " 1";
end;
run;
1.reducer.sas程序,用于实现对文本内容的reduce
data _null_;
infile stdin end=end;
file stdout;
length prvword $100.;
retain prvword "" wcount 0;
input;
word=scan(_infile_,1," ");
if prvword^=word then do;
       if ^missing(prvword) then do;
               put prvword " " wcount;
       end;
       wcount=1;
       prvword=word;
end;else do;
       wcount+1;
end;
if end then do;
put word " " wcount;
end;
run;


可以看出,用SAS实现wordcount map/reduce程序比python版本更加简单,保存上述2个代码在文件系统/home/sas目录,并分发到所有hadoop节点上


调用方式如下:
hadoop jar hadoop-streaming-2.4.0.jar   -mapper "../SASHome/SASFoundation/9.4/sas /home/sas/mapper.sas -nolog -sasuser /tmp "   -reducer "../SASHome/SASFoundation/9.4/sas /home/sas/reducer.sas -nolog -sasuser /tmp"   -input /tmp/hadoop*.log  -output /tmp/test1 


SO Easy,SAS版的hadoop wordcount map/reduce程序就完成了


不过有些事项需要注意:
1.hadoop的节点必须都安装有SAS BASE
2.sas的map/reduce程序需要分发到hadoop节点上






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值