Hadoop 使用python 来写 map-reduce, 关键就是利用标准输入和输出, 确切来说就是:
import sys
for line in sys.stdin
pass()
print "stdout"
sys.stdin 和 print 两个函数
写好了mapper.py 和 reducer.py 两个python 文件后, 用命令行来调用:
./hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-*.jar \
-files /home/mapper.py,/home/reducer.py \
-input sample.txt \
-output output \
-mapper /home/mapper.py \
-reducer /home/reducer.py
注意 -input 和 -output 指的都是hdfs里的路径, 所以要先把输入的sample.txt 用hadoop fs -put 放到hdfs里, -mapper -combiner -reducer指的都是操作系统里的路径, 把 mapper.py 和 reducer.py放到相应路径里去就好了