Python实现的大数据分析操作系统日志功能示例


Posted in Python onFebruary 11, 2019

本文实例讲述了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) + '\n')
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) + '\n')
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通过websocket与js客户端通信示例分析
Jun 25 Python
跟老齐学Python之集合(set)
Sep 24 Python
python实现将元祖转换成数组的方法
May 04 Python
Python中的getopt函数使用详解
Jul 28 Python
python Django模板的使用方法
Jan 14 Python
python3处理含有中文的url方法
May 10 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
Python图像处理之图片文字识别功能(OCR)
Jul 30 Python
PyCharm 2019.3发布增加了新功能一览
Dec 08 Python
python实现随机加减法生成器
Feb 24 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 #Python
实例讲解Python中浮点型的基本内容
Feb 11 #Python
实例介绍Python中整型
Feb 11 #Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 #Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 #Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
Feb 11 #Python
Python requests模块实例用法
Feb 11 #Python
You might like
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
php中上传文件的的解决方案
2018/09/25 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
js 函数性能比较方法
2020/08/24 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
Python 爬虫多线程详解及实例代码
2016/10/08 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
访谈节目策划方案
2014/05/15 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers