大数据:以Linux脚本实现 Map Reduce 的运用 —— 以wordCount为例

x33g5p2x  于2022-06-08 转载在 Linux  
字(1.6k)|赞(0)|评价(0)|浏览(363)

1、启动hadoop集群

$HADOOP_HOME/sbin/start-all.sh

2、准备好数据并上传HDFS

# 创建文件夹
hadoop fs -mkdir /test
#上传数据到HDFS文件
hadoop fs -put 1.data /test/
hadoop fs -put The_Man_of_Property.txt /test/

3、map.py

vi map.py

import sys
import time
import re
p = re.compile(r'\w+')
for line in sys.stdin:
        ss = line.strip().split(' ')
        for s in ss:
                #time.sleep(1)
                if len(p.findall(s)) < 1:
                        continue
                s = p.findall(s)[0].lower()
                if s.strip() != "":
                        print ("%s\t%s" % (s, 1))

cat 1.data | python map.py | head -15 运行map.py 得出头15条数据结果:map 切分单词完成,接下来用red统计单词次数。

4、red.py

import sys
current_word = None
sum = 0

for line in sys.stdin:
        word, val = line.strip().split("\t")
        if current_word == None:
                current_word = word
        if current_word != word:
                print("%s\t%s" % (current_word, sum))
                current_word = word
                sum = 0
        sum += int(val)
print("%s\t%s" % (current_word, str(sum)))

cat 1.data | python map.py | sort -k1 | python red.py | tail -15 运行mapreducer程序,实现wordCount。输出最后15条数据。

5、用脚本一步到位

创建脚本 vi run.sh

HADOOP_CMD="/usr/local/src/hadoop-2.6.5/bin/hadoop"
STREAM_JAR_PATH="/usr/local/src/hadoop-2.6.5/share/hadoop/tools/lib/hadoop-streaming-2.6.5.jar"

INPUT_FILE_PATH="/test/1.data"
# INPUT_FILE_PATH_1="/The_Man_of_Property.txt"

OUTPUT_PATH="/result_new"

$HADOOP_CMD fs -rmr -skipTrash $OUTPUT_PATH

# step.1
$HADOOP_CMD jar $STREAM_JAR_PATH \
    -input $INPUT_FILE_PATH \
    -output $OUTPUT_PATH \
    -mapper "python map.py" \
    -reducer "python red.py" \
    -file ./map.py \
    -file ./red.py

运行脚本:sh -x run.sh ,正常运行会有 map与reduce 的进度。
最后,查看你的 OUTPUT_PATH 路径:例如: hadoop fs -cat /result_new/pa* | tail -15

一样的结果不同的实现方式。

这篇文章,只是写了,怎么做的过程代码,没有详细的解释代码的意思。

下面篇文章就有详细的解释,可以看下。
https://blog.csdn.net/weixin_44775255/article/details/120912957

开发者涨薪指南

48位大咖的思考法则、工作方式、逻辑体系

相关文章