python大数据分析实例-Python实现的大数据分析操作系统日志功能示例
本文实例讲述了Python实现的大数据分析操作系统日志功能。分享给大家供大家参考,具体如下:
一 代码
1、大文件切分
import os
import os.path
import time
def FileSplit(sourceFile, targetFolder):
if not os.path.isfile(sourceFile):
print(sourceFile, ' does not exist.')
return
if not os.path.isdir(targetFolder):
os.mkdir(targetFolder)
tempData = []
number = 1000
fileNum = 1
linesRead = 0
with open(sourceFile, 'r') as srcFile:
dataLine = srcFile.readline().strip()
while dataLine:
for i in range(number):
tempData.append(dataLine)
dataLine = srcFile.readline()
if not dataLine:
break
desFile = os.path.join(targetFolder, sourceFile[0:-4] + str(fileNum) + '.txt')
with open(desFile, 'a+') as f:
f.writelines(tempData)
tempData = []
fileNum = fileNum + 1
if __name__ == '__main__':
#sourceFile = input('Input the source file to split:')
#targetFolder = input('Input the target folder you want to place the split files:')
sourceFile = 'test.txt'
targetFolder = 'test'
FileSplit(sourceFile, targetFolder)
2、Mapper代码
import os
import re
import threading
import time
def Map(sourceFile):
if not os.path.exists(sourceFile):
print(sourceFile, ' does not exist.')
return
pattern = re.compile(r'[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}')
result = {}
with open(sourceFile, 'r') as srcFile:
for dataLine in srcFile:
r = pattern.findall(dataLine)
if r:
t = result.get(r[0], 0)
t += 1
result[r[0]] = t
desFile = sourceFile[0:-4] + '_map.txt'
with open(desFile, 'a+') as fp:
for k, v in result.items():
fp.write(k + ':' + str(v) + ' ')
if __name__ == '__main__':
desFolder = 'test'
files = os.listdir(desFolder)
#如果不使用多线程,可以直接这样写
'''for f in files:
Map(desFolder + '\' + f)'''
#使用多线程
def Main(i):
Map(desFolder + '\' + files[i])
fileNumber = len(files)
for i in range(fileNumber):
t = threading.Thread(target = Main, args =(i,))
t.start()
3.Reducer代码
import os
def Reduce(sourceFolder, targetFile):
if not os.path.isdir(sourceFolder):
print(sourceFolder, ' does not exist.')
return
result = {}
#Deal only with the mapped files
allFiles = [sourceFolder+'\'+f for f in os.listdir(sourceFolder) if f.endswith('_map.txt')]
for f in allFiles:
with open(f, 'r') as fp:
for line in fp:
line = line.strip()
if not line:
continue
position = line.index(':')
key = line[0:position]
value = int(line[position + 1:])
result[key] = result.get(key,0) + value
with open(targetFile, 'w') as fp:
for k,v in result.items():
fp.write(k + ':' + str(v) + ' ')
if __name__ == '__main__':
Reduce('test', 'test\result.txt')
二 运行结果
依次运行上面3个程序,得到最终结果:
07/10/2013:4634
07/16/2013:51
08/15/2013:3958
07/11/2013:1
10/09/2013:733
12/11/2013:564
02/12/2014:4102
05/14/2014:737
希望本文所述对大家Python程序设计有所帮助。
python大数据分析实例-Python实现的大数据分析操作系统日志功能示例相关推荐
- 算法数据分析实例—城市气候与海洋关系数据分析—[线性回归:y=w*x+b]
算法数据分析实例-城市气候与海洋关系数据分析-[线性回归:y=w*x+b] 1. 导入包 1.1 安装 NumPy 1.2 安装 Pandas 1.3 安装数据可视化matplotlib.pyplot ...
- python装饰器实例-python装饰器实例大详解
原标题:python装饰器实例大详解 一.作用域 在python中,作用域分为两种:全局作用域和局部作用域. 全局作用域是定义在文件级别的变量,函数名.而局部作用域,则是定义函数内部. 关于作用域,我 ...
- python数据分析实例-python数据分析实战
Python数据分析实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1nlHM1IW8MYg3z79TUwIsWg 提取码:ux8t 复制这段内容后打开百度网盘手 ...
- python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)
本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有 ...
- python多线程爬虫实例-Python多线程爬虫简单示例
python是支持多线程的,主要是通过thread和threading这两个模块来实现的.thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用. ...
- python简单程序实例-python简单实例训练(21~30)
注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!! 21.题目:将一个正整数分解质因数.例如:输入90,打印出 ...
- python简单程序实例-python简单项目实例
语言多元化是PayPal编程文化中一个重要的组成部分.在C++和Java长期流行的同时,更多的团队选择了Jva和Scala.同时,Braintree的收购也引入了一个久经世故的Ruby社区.Pytho ...
- python基础程序实例-Python基础的初始
1.初始Python 1. pythonde 发展历史 自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程. Python的创始人为荷兰人吉多·范罗苏姆 ...
- python多线程爬虫实例-Python实现多线程爬虫
编辑推荐: 本文主要介绍对Python多线程爬虫实战的整体的思路,希望对大家有帮助. 本文来知乎,由火龙果软件Alice编辑,推荐. 最近在写爬虫程序爬取亚马逊上的评论信息,因此也自学了很多爬虫相关的 ...
最新文章
- RDKit:化合物骨架分析
- PostgreSQL中的大容量空间探索时间序列数据存储
- Java基础之多线程详细分析
- 类 property属性
- selenium:反反爬拖动验证码
- zoj3195 联通树上三个点的路径长
- Java开发人员应了解的JVM流行语
- [Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]
- 解决:Connect to xx.xx.xxx.xx :8081 [/xx.xx.xx.xx] failed: Connection refu sed: connect -> [H
- ElementUI table组件,表格组件,单击单元格可编辑逻辑
- 多段图的动态规划算法(C/C++)
- dep指定版本 go_Go 包管理工具-dep
- @HTML.RadioButtonFor和@Html.DropDownList用法
- linux系统修改自动启动项,linux修改启动项
- excel进销存添加网页模块,可手机开单
- Windows XP 64位注册表删除问题
- 单片机中断程序详解(转)
- 图相关论文阅读与总结
- 2012服务器系统有什么版本的,Windows server 2012操作系统有哪几个版本
- 计算机考研全国统考时段,考研初试各科目时间安排