使用python处理百万条数据分享(适用于java新手)
1、前言
因为负责基础服务,经常需要处理一些数据,但是大多时候采用awk以及java程序即可,但是这次突然有百万级数据需要处理,通过awk无法进行匹配,然后我又采用java来处理,文件一分为8同时开启8个线程并发处理,但是依然处理很慢,处理时长起码在1天+所以无法忍受这样的处理速度就采用python来处理,结果速度有了质的提升,大约处理时间为1个小时多一点,这个时间可以接受,后续可能继续采用大数据思想来处理,相关的会在后续继续更新。
2、安装python
第一步首先下载python软件,在官网可以根据自己情况合理下载,其余就是下一步搞定,然后在开始里面找到python的exe,点击开然后输入1+1就可以看出是否安装成功了.如下图

3、IEDA编辑器如何使用python
首先我们在idea中打开设置然后点击plugins,在里面有个输入框中输入python,根据提示找到如下的这个(idea版本不同可能影响python版本)

然后开始创建idea工程
file->New->Project->python然后出现如下图情况(其他的下一步然后就会创建工程了)

4、开发前知识准备
文件的读取,python读取文件非常的简单,我现在直接贴代码提供给大家
def readData(fileName):
result = ""
count=0
with open(fileName, 'r') as f:
for line in f.readlines():
result += line
count += 1
print count
return result """写入文件""" def writeData(fileName, data):
with open(fileName, 'a+')as f:
f.write(data)
读写
其中def是函数的定义,如果我们写定义一个函数直接前面加上def,返回值可以获取后直接用return即可
python我们直接采用with open('文件路径',模式) as f的方式来打开文件
模式:
| r | 只读 | 文件不存在则出错 |
| r+ | 支持读写 | 文件不存在则出错,写入时,会覆盖源文件 |
| w | 只写 | 如果文件不存在则创建文件,会覆盖源文件,如果写入内容少则保留为覆盖的内容 |
| w+ | 支持读写 | 同上 |
| a | 只写 | 如果文件不存在则创建文件,会采用追加模式 |
| a+ | 读写 | 同上 |
| b | 二进制读写 |
跨文件引用:
同一个层级python是采用import直接导入文件名的方式,看下一个代码
import IoUtils fileName1 = 'D:\\works\\pythons\\files\\userids.txt'
userIds = IoUtils.readData(fileName1).split('\n')
fileName2 = 'D:\\works\\pythons\\files\\records.txt'
records = IoUtils.readData(fileName2).strip()
recordsArr = records.split('\n')
count=0;
for data in recordsArr:
count+=1
if data.split('\t')[2] in userIds:
IoUtils.writeData('D:\\works\\pythons\\files\\20180604.txt', data + '\n')
print count
其他说明:
其中split和java程序的split一样,strip是去掉空格换行符等,循环(for in)模式,判断某个元素是否在数组中存在则直接使用 元素 in 数组
5、总结
如果你有数据量级别在百分的时候我建议优先可以想到python处理真的特别方便,而且很简单学习成本也很低,但是却很实用,其实awk在数据处理中也发挥很大的作用,大家可以私下学习,如果有时间我会分享一些,关于数据我这里就不提供了大家可以按照我上述代码跑就可以,更细节的我推荐看廖雪峰的python教程。
使用python处理百万条数据分享(适用于java新手)的更多相关文章
- 提高MYSQL百万条数据的查询速度
提高MYSQL百万条数据的查询速度 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 nul ...
- 问问题_Java一次导出百万条数据生成excel(web操作)
需求:在web页面操作,一次导出百万条数据并生成excel 分析: 1.异步生成Excel,非实时,完成后使用某种方式通知用户 2.生成多个excel文件,并打包成zip文件,因为一个excel容纳不 ...
- 处理mysql上百万条数据的优化
php 处理上百万条的数据库如何提高处理查询速度 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字 ...
- Python-实现对表插入百万条数据
新手小白写的,我自己都不知道对不对,先写下来记着,以后掌握更多Python知识后,再来看下写的对不对. 题目:造一百万条大学生的基本信息(学校.专业.姓名.学号) 分析思路:利用Python的MySQ ...
- 查询优化百万条数据量的MySQL表
转自https://www.cnblogs.com/llzhang123/p/9239682.html 1.两种查询引擎查询速度(myIsam 引擎 ) InnoDB 中不保存表的具体行数,也就是说, ...
- 如何在mysql数据库生成百万条数据来测试页面加载速度
1.首先复制一条sql 在复制前,需要确定该记录是否有主键 若无,则代码非常简单, "; 复制的表名↑ 粘贴的表名↑ ...
- php使用cvs导出百万条数据,大量数据
MySQL CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL DEFAUL ...
- DataTable 快速导入数据库——百万条数据只需几秒
public void InsertTable(DataTable dt, string TabelName, DataColumnCollection dtColum) { string str = ...
- jdbc读取百万条数据出现内存溢出的解决办法
本人在做项目实施时,我们使用的是mysql数据库,在不到一个月的时间已经有了2千万条数据,查询的时候非常慢,就写了一个数据迁移的小项目,将这两千万条数据存放到MongoDB中看效率怎么样,再读取数据时 ...
随机推荐
- centos7 修改中文字符集
CentOS 7字符集的问题与6有点区别,会出现下面问题,查看是中文,vi进入就变成乱码了 生产中修改配置文件 [root@ce1d2002a999 ~]# cat /etc/locale.con ...
- Hadoop HBase概念学习系列之HLog(二)
首先,明确,HRegion服务器包含两大部分:HLog和HRegion. HLog用来存储数据日志,采用的是先写日志的方式. 当用户需要更新数据的时候,数据会被分配到对应的HRegion服务器上提交修 ...
- 【Android自动化】在使用uiautomator框架自动化时,往往有时再运行脚本时发现xxx实例属性不被允许
例如: # -*- coding:utf-8 -*- from uiautomator import device as d d(classname="android.widget.List ...
- Camstar MES 5.8 發現Ajax事件失效
從Camstar4.5升級到5.8後,發現原來用戶在4.5下可以正常使用的不良信息收集功能,列出的不良只有第一頁可以顯示,無法自動裝載下一頁. 嘗試發出,IE以下這個選項沒有選中,選中後,就可以正常工 ...
- Docker 安装 - Docker 与前端(一)
Docker 是一个开源的容器引擎,可以方便的对容器进行管理.作为一种新兴的虚拟化方式,跟传统的虚拟化方式相比具有众多优势.<Docker 遇见前端>系列文章,旨在记录如何通过 docke ...
- 网站如何接入第三方登录,微信登录和QQ登录:注册认证篇
第三方登录平台接入 (QQ\微信登录) QQ登录接入 第一步成为QQ应用开发者,审核期限七天 一.所需材料 1.公司注册相关信息 2.营业执照扫描件 微信登录接入 第一步成为微信开发平台开发者,认证费 ...
- Spring(十六)之MVC框架
MVC 框架教程 Spring web MVC 框架提供了模型-视图-控制的体系结构和可以用来开发灵活.松散耦合的 web 应用程序的组件.MVC 模式导致了应用程序的不同方面(输入逻辑.业 ...
- WorldWind源码剖析系列:下载请求类DownloadRequest
下载请求类DownloadRequest是各种下载请求的抽象基类,先派生出网络下载请求类WebDownloadRequest,再派生出地理空间下载请求类GeoSpatialDownloadReques ...
- nodejs 模板引擎jade的使用
1.test.jade文件 html head style body div.box div#div1 div aaa div(class="aaa left-warp active&quo ...
- E - A Twisty Movement
A dragon symbolizes wisdom, power and wealth. On Lunar New Year's Day, people model a dragon with ba ...