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 判断是否为质数或素数的实例
Oct 30 Python
python使用生成器实现可迭代对象
Mar 20 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
详解Python 函数参数的拆解
Sep 02 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
php下过滤HTML代码的函数
2007/12/10 PHP
php session处理的定制
2009/03/16 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
JSONP基础知识详解
2017/03/19 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python socket编程实例详解
2015/05/27 Python
Python制作简易注册登录系统
2016/12/15 Python
Python的标准模块包json详解
2017/03/13 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
python调用摄像头的示例代码
2020/09/28 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
行政办公室岗位职责
2014/03/18 职场文书
机械专业求职信范文
2014/07/15 职场文书
中国世界遗产导游词
2015/02/13 职场文书
2014年个人年终总结
2015/03/09 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫
移除Selenium中window.navigator.webdriver值
2022/06/10 Python