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 相关文章推荐
Flask SQLAlchemy一对一,一对多的使用方法实践
Feb 10 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 Python
Python 3 判断2个字典相同
Aug 06 Python
python中几种自动微分库解析
Aug 29 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
python中sympy库求常微分方程的用法
Apr 28 Python
对python中arange()和linspace()的区别说明
May 03 Python
Python爬虫之爬取淘女郎照片示例详解
Jul 28 Python
分享提高 Python 代码的可读性的技巧
Mar 03 Python
python神经网络ResNet50模型
May 06 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
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
python安装以及IDE的配置教程
2015/04/29 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
用Python实现随机森林算法的示例
2017/08/24 Python
scrapy爬虫实例分享
2017/12/28 Python
Python 修改列表中的元素方法
2018/06/26 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
大学生入党思想汇报
2014/01/14 职场文书
21岁生日感言
2014/02/27 职场文书
商场促销活动总结
2014/07/10 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
Python基础知识之变量的详解
2021/04/14 Python