丁思蓉?何静茹?李真
摘 要:拆分大数据文档是日常生活中所需的,随着大数据文档的增加,选择拆分行数是一个值得研究的问题。运用PyCharm Community和Python来拆分大文档,对比分析在不同行数的条件下,大文档拆分成小文档所用的数量以及时间。报告了拆分数量适中是最佳的,文档数据量越大,消耗的时间越不稳定。通过对同一文档拆分最短时间的拆分行数进行研究,得到拆分时间规律,选择最佳的拆分行数,以此提高拆分文档效率。
关键词:拆分大数据文档;对比分析;拆分行数
中图分类号:TP309 文献标识码:A文章编号:2096-4706(2022)06-0107-03
Research on Big Data Document Splitting Rule Based on Python
DING Sirong, HE Jingru, LI Zhen
(Chengdu Jincheng College, Chengdu 611731, China)
Abstract: Splitting big data documents is necessary in daily life. With the increase of big data documents, choosing the number of splitting rows is a problem worthy of study. This paper uses the PyCharm Community and Python to split large documents, compares and analyzes the quantity and time used to split large documents into small documents under the condition of different numbers of rows. It is reported that a moderate number of splitting rows is the best, and the larger the amount of document data, the more unstable the time consumed. By studying the number of splitting rows in the shortest time of splitting the same document, the rule of splitting time is obtained, and the best number of splitting rows is selected to improve the efficiency of splitting the document.
Keywords: splitting big data document; comparative analysis; the number of splitting rows
0 引 言
人类数据库以18个月为周期,倍数增长,大文档越来越多,在进行数据库处理领域,业内通常将大于10 GB的文本定义为大数据量表。对大文本的数据处理与分析会首先对文件进行拆分,第一提高电脑运行效率,第二提高分析速度,第三方便进行传输。对于大数据量表的拆分。首先需要根据实际情况确定拆分原则,可以按照不同的地域、时间切片等方式进行拆分。在方法上,可以以时间的递增而表的记录数量均匀递增的数据库问题,可以使用时间切片的方式来解决。把一个大数据量以时间节点拆分成多个小数据量表,分布到不同的硬盘或其他存储介质中,大大提升了查询速度[1]。第二,会按照不同的表拆分到不同的数据库(主机)之上,或根据表中的数据的逻辑关系,浮同一个表中的数据按照某种条件拆分到多台数据库(主机)上面[2]。或者在进行总段拆分时宜采用自动拆分和交互拆分相结合的方式进行,通过“一分为二”的方式,把一个总段按给定的分界面拆分成二部分,再对拆分出的部分继续“一分为二”,经过几次“一分为二”,就可以拆分成最终的分段[3]。以及进行 K-means聚类,产生n个簇,从每个簇中取出一个样本构成子集,每个子集与少数类样本一起构成m训练子集[4]。
由于大数据量表容量过大,使用传统的软件无法处理,比如EXCEL,NAVICAT,SPSS等。因此需要使用对大数据量表更具处理能力的Python数据模块[5]。本论文研究在使用Python数据模块拆分大数量表时的拆分效率问题。在不同的拆分数量上,如何消耗的时间最短。
本次研究的大数据量表容量为9.82 GB,CSV逗号分隔符格式,包含1亿7百多万条数据。现有EXCEL软件最多现实1 048 576行數据,无法将文档完全显示。使用Python的Pandas数据分析库开打文档的时间约为5~10分钟,效率太低。因此只能选择先将文档进行拆分,小于EXCEL的最大显示行数后,才进行分析。
文档拆分思路为,先使用Python的文档映射功能,逐行扫描数据量表。达到100万上限后,将其保存为一个新的文档,在继续扫描下一个100万行数据。以此类推,完成大数据量表的拆分。
在进行拆分程序运行的过程中,我们发现不同的扫描行数,不同的拆分文档数,其消耗的时间不同。例如,扫描行数多,保存时长长,但拆分文档数少;相反扫描行数少,保存时长短,但拆分文档数量多。那么扫描行数,保存时长和拆分文档数如何搭配,能够让拆分文档效率最高呢?
为此我们进行了一系列的实验。将扫描行数按照10万、20万、30万到100万行分成10档,使用不同的电脑进行拆分,记录每个文档的拆分时间。试图找出扫描行数,保存时间和拆分文档数之间的规律。由于拆分10行数据文档的时间低于1秒,为了分析和记录的便捷,记录时间统一精确到毫秒。5D2058FE-E3C3-4CC2-8DA5-F9965BB54F4A
1 实验过程
以下我们从工具配置、实验实现过程和结果展示三个方面还原整个实验的过程。
1.1 工具配置
所使用的笔记本电脑为Thinkpad e14和华为MateBook 14。两台电脑的硬件配置如下:
华为MateBook 14处理器为Intel(R)Core(TM) i5-10210U CPU @ 1.60 GHz 2.11 GHz,系统类型为64位操作系统,基于x64的处理器;
ThinkPad E14的处理器为11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40 GHz (8 CPUs),~2.4 GHz,系统类型为64位操作系统。
1.2 实现过程
我们使用PyCharm Community Edition 2020.2.1 x64、Python 3.8 (64-bit)和2019版Excel。使用PyCharm编写文档拆分程序,采集每一个拆分文档的开始和结束时设定时间点,并将时间精度设为毫秒。在代码中设置拆分文档大小参数,用于实验在不同文档大小下的开始结束时间点。在运行软件之前需要停止所有的后台以及Wi-Fi信号运行软件,保证整个实验只有“拆分行数”这一个因变量,防止后台的软件在运行时对程序运行造成影响。例如拆分时间的图像波动十分厉害,说明此时的数据不稳定,造成的主要原因就是此时拆分每一个文件的时间的自变量会不仅仅是拆分行数的不同,也包括电脑运行PyCharm的速度不一样,当自变量超过两个的时候,得出的因变量则无法说明我们的数据是“拆分不同行数文档所用的时间”。
我们以10万到100万行,10个档次作为文档大小采集点执行程序,收集每一个文档拆分的开始时间、结束时间。将所有数据转入Excel中,使用每一个文档的结束时间与开始时间相减得到文档拆分消耗时间。使用程序的结束时间与考试时间相减得到文档拆分的总消耗时间。
由于10万条文档和100万条文档的消耗时间存在数量级的差异,因此需要对数据进行标准化处理。
1.3 结果展示
以下展示华为MateBook 14的拆分消耗时间。10到30万行的消耗时间折线图的图像均在一定的区域内波动。40万行的消耗时间折线图后半段呈向上的趋势,所以用40万行来拆分时,拆分到后期时所花费的时间相应会增加。50万行的消耗时间折线图相较于前四个图像更加不稳定。60万行的消耗时间折线图图像在后半段时间出现了一段快速下降的区域,当下降到最低点时图像开始呈直线上升,直到后半段图像才趋于稳定,在一定的范围内波动。70万行的消耗时间折线图整体相对稳定,中间在拆分第73到79个文件时所消耗的时间明显高于其他值。80万行到100万行的图像变得更加不稳定,消耗时间的波动性很强。
综合10万到100万的图表来看,100万到80万中,会有几个突变值,不稳定,且拆分行数越大,拆分文档的时间越不稳定,而70万到10万这个区间中,拆分文档的时间则趋于稳定,都在一个稳定的趋于范围内波动。
以下图1到图2依次为华为MateBook14和ThinkPad E14 Gen2联想笔记本电脑10万到100万行处理消耗时间的汇总折线图。
由以上时间消耗记录可以看出当9.82 GB存储数据的容量大小的文件拆分时,随着行数的上升,每次大文档拆分出来的文件数量逐步递减。
华为的图像中拆分的数量从10万到70万行时,所消耗的时间向上呈抛物线的形式,其中的最低点在20万到30万行间,且10万到20万的下降速率比20万到70万行的上升速率大,而在70万到90万行中,随着数量的增加,所消耗的时间则减少,其中从70万到80万行的时间减少最多,80万已经低于10万到70万行抛物线的最低点,80万到90万行有轻微的下降趋势,90万行是所有数据的最低点,90万到100万行之间所用的时间有轻微的上升。
联想的图像中在10万到20万行呈下降趋势,20万到80万行的区间曲线的波动不大,拆分的时间相似,在80万到90万行呈上升的趋势后趋于稳定。
ThinkPad E 14 Gen2联想笔记本电脑整体比华为MateBook14的所用时间短。华为MateBook14在20万到10万拆分每一个文档的时间总体呈上升趋势,ThinkPad E 14 Gen2联想则在20万到10万一直在一定的范围内跳动。
2 实验结论
通过使用编程方法对大数据文档进行拆分的实验分析,绘制在不同数据量大小的消耗时间和文档数量的折线图,我们可以得到以下三个结论。
2.1 大數据文档拆分所消耗的时间与硬件有关
在实验过程中,华为电脑所消耗的时间普遍高于联想,两台电脑在拆分70万到100万行的规律更是呈明显相反的趋势。在不同硬件的支持下,无论是软件启动的速度还是执行命令的时间都产生不小的影响。
2.2 拆分时间规律与传统认知差异较大
通常我们认为单个文件小、拆分数量多和单个文件大、拆分数量少,两种情况所消耗的时间相似且较多;单个文件适中、拆分数量适中所消耗的时间应该最小。但事实却不一样,总时间消耗的最低值没有出现在文档大小和数量适中的情况,不同的电脑总时间消耗的最低值也不同。
2.3 拆分时间规律与文档数据量有关
文档数据量越大,消耗时间波动性越小。拆分一个文件的时间短,在由于在执行文档拆分程序过程中,电脑很容易受到外界干扰。并且单个文件越小,拆分时间越短受干扰的程度越大,所得到的时间图像波动性更强。
3 结 论5D2058FE-E3C3-4CC2-8DA5-F9965BB54F4A
本文利用Python对大数据文档的拆分进行了分析,得到了不同的拆分行数对拆分时间的影响。研究结果表明,电脑硬件、文档数据量对拆分时间的影响较为复杂,从提高拆分速率的角度来看,尽可能选择高配置的电脑将文件拆分为大容量文档。
通过使用两台不同知名品牌的笔记本电脑,对同一份文档执行相同代码程序可以看出,不论消耗的时间还是规律都呈现出了完全不同的变化。硬件配置的差异对处理效率有明显影响,在运行同一个文件时,前后两次处理的时间差异较大,需要根据电脑的实际情况进行调整。拆分同一个文档中数据量越大越容易观测到异值,便于重新进行实验,最终得到的图像也就更加可靠稳定,文档数据量小,不容易确定数据的波动范围以及趋势,实验的容错性也就越低,所以在没有数据最大执行容量大小的限制下,需要尽可能将文档拆分为大容量文档。
由于本次实验只是用两台电脑进行数据实验,不具有普遍性,并且无法将所有的干扰全部清除,我们只能将其中一些干扰排除在外,例如软件的启动时间和其他软件占用资源等,所以可能会存在较大的误差。后续会使用更多的电脑作为样本采集拆分数据,并通过数学建模的方式从数据中提取规律,找到在不同情况下的最有效率解。
参考文献:
[1] 马小丽,姜赞梅.MS SQL Server2000中大数据量表的拆分与实现 [J].电气传动自动化,2013,35(5):46-48+56.
[2] 侯佳佳,乔运华,卜建国,等.基于分布式数据库数据处理的研究 [J].制造業自动化,2013,35(1):94-96.
[3] 郑斌华,陶自强,杨银官.船舶总段拆分模型数据重用技术研究与应用[C]//2013年CAD/CAM学术交流会议论文集,2013-06,中国贵州贵阳,2013:144-147.
[4] 杜红乐,张燕.基于拆分集成的不均衡数据分类算法 [J].计算机系统应用,2017,26(8):223-226.
[5] 黄蓉美,宋永生.基于Python的植物标本采集实训平台 [J].现代信息科技,2021,5(17):35-37.
作者简介:丁思蓉(2003.12—),女,汉族,四川自贡人,本科在读,研究方向:大数据技术与分析。
收稿日期:2022-02-075D2058FE-E3C3-4CC2-8DA5-F9965BB54F4A