本文实例讲述了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实现的大数据分析操作系统日志功能示例相关推荐

  1. 算法数据分析实例—城市气候与海洋关系数据分析—[线性回归:y=w*x+b]

    算法数据分析实例-城市气候与海洋关系数据分析-[线性回归:y=w*x+b] 1. 导入包 1.1 安装 NumPy 1.2 安装 Pandas 1.3 安装数据可视化matplotlib.pyplot ...

  2. python装饰器实例-python装饰器实例大详解

    原标题:python装饰器实例大详解 一.作用域 在python中,作用域分为两种:全局作用域和局部作用域. 全局作用域是定义在文件级别的变量,函数名.而局部作用域,则是定义函数内部. 关于作用域,我 ...

  3. python数据分析实例-python数据分析实战

    Python数据分析实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1nlHM1IW8MYg3z79TUwIsWg 提取码:ux8t 复制这段内容后打开百度网盘手 ...

  4. python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有 ...

  5. python多线程爬虫实例-Python多线程爬虫简单示例

    python是支持多线程的,主要是通过thread和threading这两个模块来实现的.thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用. ...

  6. python简单程序实例-python简单实例训练(21~30)

    注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!! 21.题目:将一个正整数分解质因数.例如:输入90,打印出 ...

  7. python简单程序实例-python简单项目实例

    语言多元化是PayPal编程文化中一个重要的组成部分.在C++和Java长期流行的同时,更多的团队选择了Jva和Scala.同时,Braintree的收购也引入了一个久经世故的Ruby社区.Pytho ...

  8. python基础程序实例-Python基础的初始

    1.初始Python 1. pythonde 发展历史 自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程. Python的创始人为荷兰人吉多·范罗苏姆 ...

  9. python多线程爬虫实例-Python实现多线程爬虫

    编辑推荐: 本文主要介绍对Python多线程爬虫实战的整体的思路,希望对大家有帮助. 本文来知乎,由火龙果软件Alice编辑,推荐. 最近在写爬虫程序爬取亚马逊上的评论信息,因此也自学了很多爬虫相关的 ...

最新文章

  1. RDKit:化合物骨架分析
  2. PostgreSQL中的大容量空间探索时间序列数据存储
  3. Java基础之多线程详细分析
  4. 类 property属性
  5. selenium:反反爬拖动验证码
  6. zoj3195 联通树上三个点的路径长
  7. Java开发人员应了解的JVM流行语
  8. [Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]
  9. 解决:Connect to xx.xx.xxx.xx :8081 [/xx.xx.xx.xx] failed: Connection refu sed: connect -> [H
  10. ElementUI table组件,表格组件,单击单元格可编辑逻辑
  11. 多段图的动态规划算法(C/C++)
  12. dep指定版本 go_Go 包管理工具-dep
  13. @HTML.RadioButtonFor和@Html.DropDownList用法
  14. linux系统修改自动启动项,linux修改启动项
  15. excel进销存添加网页模块,可手机开单
  16. Windows XP 64位注册表删除问题
  17. 单片机中断程序详解(转)
  18. 图相关论文阅读与总结
  19. 2012服务器系统有什么版本的,Windows server 2012操作系统有哪几个版本
  20. 计算机考研全国统考时段,考研初试各科目时间安排

热门文章

  1. SPA单页应用前后分离微信授权
  2. 结构型模式---适配器模式
  3. JavaScript知识点总结
  4. 提交svn的时候,提示丢失了预定增加的xxxx
  5. WinForm实现Rabbitmq官网6个案例-Topics
  6. 远程方法调用简单实现
  7. Highcharts-2.3.2 网页曲线绘制工具 一淘网价格曲线
  8. python画-用Python画一颗特别的心送给她
  9. python语言入门p-python初学者怎么入门
  10. python3安装教程-Python3+Scapy安装使用教程