Java千万级别数据处理与优化
2016-11-09赵珊
赵珊
摘要:伴随着云计算、物联网等新兴技术的不断发展,数据量呈现几何式的增长,海量庞大的数据出现标志着大数据时代的来临。从海量的数据资源中提取有价值的信息并反馈给用户是数据处理面临的主要研究方向。本文主要探讨Java这门经典的编程语言在当前的数据环境下,如何实现对大数据的加工及优化处理,来实现数字资产的保值增值。
关键词:Java 大数据 处理技术
中图分类号:TP315.1 文献标识码:A 文章编号:1007-9416(2016)09-0239-01
1 Java处理数据时的交互方式
大数据本身就是传统意义上的数据的几何级表现形式。大数据技术意义在于对这些有价值的数据进行专业化处理,通过“加工”实现数据的“增值”。大数据处理的一个关键环节就是数据处理引擎如何与大数据有一个良好的连接通道。目前比较主流的数据处理引擎开发语言有Java,C#,C++等。
Java作为主流开发语言的连接数据库方式采用JDBC,通过建立一个数据库连接池以及一套连接使用、分配、管理策略,连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。另外,由于对JDBC中的原始连接进行了封装,隔离了应用本身的处理逻辑和具体数据库访问逻辑,使应用本身的复用成为可能,提高了开发效率。
从传统技术发展来看,一般新技术通常不会跨越太大。特别是软件开发技术,为了不过度超前采用一种妥协的技术发展方式向下兼容。新技术大多是从传统方式拓展延伸过来,而不是跨越式的从新研发一套全新的技术,大数据处理也遵循着这样的一个原则。
2 大数据量下的内存管理
JVM(Java Virtual Machine,Java虚拟机)是Java的核心和基础,在Java编译器和OS平台之间的虚拟处理器。它是一种基于操作系统和硬件平台并利用软件方法来实现的抽象的计算机,主要功能是管理分配内存和执行垃圾回收。JVM内存结构由堆、栈、本地方法栈、方法区等部分组成。
当Java一次性从数据库加载过多的数据时,由于查询结果的记录首先要读入JVM内存,大量的数据占用了内存空间,此时再为实例化对象申请空间时,便出现内存溢出的问题,即使调整内存大小,启动程序的时候加上-Xmx1024m,将JVM可以使用调至1G内存,很多时候也不能满足调用数据量的要求。
3 大数据量处理时的优化方案
通过对JVM使用内存的分析,结合数据调用处理的研究与实践,得出的解决方案如下:
(1)客户端读取数据时,不再一次性读入JVM内存中,采用分批查出所有数据,每次查询得到的部分记录使用恒定内存读入的方法,避免内存溢出问题。
(2)将查询出的数据在JVM内存中经过简单加工写入查询结果文件,对生成的记过文件进行压缩,目的是减小文件大小,节省带宽,加快文件传输速度,然后按一定规则存入本地硬盘。
(3)获取数据时,通过批次读取将压缩文件直接发给客户端,在客户端解开压缩文件获得查询结果。
4 结语
本文通过Java语言数据处理时的原理分析,提出了大数据量数据加载的解决方案,实现了在不增加硬件开销的前提下,由于数据量大导致的内存溢出问题,保证了数据查询时系统的高效与稳定性。
参考文献
[1]宋东海,贲可荣,张志祥,等.一种基于类的JAVA多线程程序数据竞争静态检测算法[J].《计算机工程与科学》,2014.02.