Python的MapReduce调用及多输入文件的使用(统计url的点击量)
2017-08-28 10:16
986 查看
1、在日志中统计对应链接的点击量脚本
由于业务上暂用不到reduce过程,所以只有一个mapper脚本。
/Users/nisj/PycharmProjects/BiDataProc/hitsCalc3/filter_mapperOnly.py
2、Python的MapReduce调用
2.1、按天统计
即一次统计一天的日志文件,计算链接在一天内的点击量。
2.2、一天内某几个小时的点击量统计
可以使用正则实现需求,中括号里的对应的是一个字符。
2.3、正则及多输入文件实现跨天某几个小时的点击量统计
多输入文件可以是如下两种方式,经测试,它们的结果是一致的。
另一个的测试:
3、结果的最终统计
#过滤出的结果查看:
hadoop dfs -cat /nisj/mp_result/*
#点击量的统计计算
hadoop dfs -cat /nisj/mp_result/* |wc -l
由于业务上暂用不到reduce过程,所以只有一个mapper脚本。
/Users/nisj/PycharmProjects/BiDataProc/hitsCalc3/filter_mapperOnly.py
#!/usr/bin/env python # encoding: utf-8 import sys # 输入为标准输入stdin for line in sys.stdin: # 删除开头和结果的空格 if '/event/apply/template/yhzrsolo.htm?s_=rmhd' in line: print '%s' % (line)
2、Python的MapReduce调用
2.1、按天统计
即一次统计一天的日志文件,计算链接在一天内的点击量。
hadoop dfs -rm -r -skipTrash /nisj/mp_result; hadoop jar /opt/apps/hadoop-2.7.2/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar \ -mapper /home/hadoop/nisj/hitsCalc3/filter_mapperOnly.py -file /home/hadoop/nisj/hitsCalc3/filter_mapperOnly.py \ -input /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.*.txt \ -output /nisj/mp_result
2.2、一天内某几个小时的点击量统计
可以使用正则实现需求,中括号里的对应的是一个字符。
hadoop dfs -rm -r -skipTrash /nisj/mp_result; hadoop jar /opt/apps/hadoop-2.7.2/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar \ -mapper /home/hadoop/nisj/hitsCalc3/filter_mapperOnly.py -file /home/hadoop/nisj/hitsCalc3/filter_mapperOnly.py \ -input /tmp/oss_access/2017-08-2[1-4]/*_localhost_access_log.2017-08-2[1-4].*.txt \ -output /nisj/mp_result
2.3、正则及多输入文件实现跨天某几个小时的点击量统计
多输入文件可以是如下两种方式,经测试,它们的结果是一致的。
hadoop dfs -rm -r -skipTrash /nisj/mp_result; hadoop jar /opt/apps/hadoop-2.7.2/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar \ -mapper /home/hadoop/nisj/hitsCalc3/filter_mapperOnly.py -file /home/hadoop/nisj/hitsCalc3/filter_mapperOnly.py \ -input /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.1[8-9].txt \ -input /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.2[0-3].txt \ -input /tmp/oss_access/2017-08-22/*_localhost_access_log.2017-08-22.0[0-9].txt \ -input /tmp/oss_access/2017-08-22/*_localhost_access_log.2017-08-22.1[0-8].txt \ -output /nisj/mp_result
hadoop dfs -rm -r -skipTrash /nisj/mp_result; hadoop jar /opt/apps/hadoop-2.7.2/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar \ -mapper /home/hadoop/nisj/hitsCalc3/filter_mapperOnly.py -file /home/hadoop/nisj/hitsCalc3/filter_mapperOnly.py \ -input /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.1[8-9].txt /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.2[0-3].txt /tmp/oss_access/2017-08-22/*_localhost_access_log.2017-08-22.0[0-9].txt /tmp/oss_access/2017-08-22/*_localhost_access_log.2017-08-22.1[0-8].txt \ -output /nisj/mp_result
另一个的测试:
hadoop dfs -rm -r -skipTrash /nisj/mp_result; hadoop jar /opt/apps/hadoop-2.7.2/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar \ -mapper /home/hadoop/nisj/hitsCalc3/xx.py -file /home/hadoop/nisj/hitsCalc3/xx.py \ -input /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.1[8-9].txt /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.2[0-3].txt \ -output /nisj/mp_result hadoop dfs -rm -r -skipTrash /nisj/mp_result; hadoop jar /opt/apps/hadoop-2.7.2/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar \ -mapper /home/hadoop/nisj/hitsCalc3/xx.py -file /home/hadoop/nisj/hitsCalc3/xx.py \ -input /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.1[8-9].txt \ -input /tmp/oss_access/2017-08-21/*_localhost_access_log.2017-08-21.2[0-3].txt \ -output /nisj/mp_result
3、结果的最终统计
#过滤出的结果查看:
hadoop dfs -cat /nisj/mp_result/*
#点击量的统计计算
hadoop dfs -cat /nisj/mp_result/* |wc -l
相关文章推荐
- 用Python编写MapReduce代码与调用-统计accessLog中链接的点击量
- Hadoop:使用原生python编写MapReduce来统计文本文件中所有单词出现的频率功能
- 关于使用c#调用python脚本文件,脚本文件需要传递参数
- linux下使用swig让python调用C++(复杂版:包括多文件调用和链接库)
- 使用Python统计垃圾文件
- 用Python编写MapReduce代码与调用-某一天之前的所有活跃用户统计(1)
- 使用python统计文件行数示例分享
- windows下使用批处理文件调用python程序
- Python根据AccessLog统计对应Url的点击量
- 用Python编写MapReduce代码与调用-统计accessLog中链接所对应的UV
- 以不同用户身份运行程序,/savecred只需要输入一次密码(GetTokenByName取得EXPLORER.EXE的令牌,然后调用CreateProcessAsUser,而且使用LoadUserProfile解决另存文件的问题)good
- 从 stdin 读取输入的C程序示例 && python脚本调用可执行文件
- Python根据AccessLog统计对应Url的点击量2
- 用Python编写MapReduce代码与调用-某一天之前的所有活跃用户统计(2)
- python下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- python文件中的__name__=='__main__'的使用及调用其他py文件中的函数方法
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
- Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)