上海 [切换城市]

上海站

上海松江Java学习机构-Java如何处理大数据

更新时间:2019/10/10 17:20:16信息编号:2056-623063
所属分类:
教育培训 职业培训 
所在区域:
上海 松江
详细地址:
乐都大厦3楼上元教育
联 系 人:
古老师
电  话:
19121262003
联系QQ:
联系QQ 19121262003
收录查询: 百度 搜狗 360   分享更易传播
小生活网提醒您:1、在办理服务前请确认对方资质, 夸大的宣传和承诺不要轻信!2.任何要求预付定金、汇款至个人银行账户等方式均存在风险,谨防上当受骗!
详细介绍

上海松江Java学习机构-Java如何处理大数据


Java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,那Java是如何处理大数据的呢?有什么技巧吗?在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法小~百~姓~网
例如,我们要将数据库(不论是什么数据库)的数据导出到一个文件,一般是Excel或文本格式的CSV;对于Excel来讲,对于POI和JXL的接口,你很多时候没有办法去控制内存什么时候向磁盘写入,很恶心,而且这些API在内存构造的对象大小将比数据原有的大小要大很多倍数,所以你不得不去拆分Excel,还好,POI开始意识到这个问题,在3.8.4的版本后,开始提供cache的行数,提供了SXSSFWorkbook的接口,可以设置在内存中的行数,不过可惜的是,他当你超过这个行数,每添加一行,它就将相对行数前面的一行写入磁盘(如你设置2000行的话,当你写第20001行的时候,他会将第一行写入磁盘),其实这个时候他些的临时文件,以至于不消耗内存,不过这样你会发现,刷磁盘的频率会非常高,我们的确不想这样,因为我们想让他达到一个范围一次性将数据刷如磁盘,比如一次刷1M之类的做法,可惜现在还没有这种API,很痛苦,我自己做过测试,通过写小的Excel比使用目前提供刷磁盘的API来写大文件,效率要高一些,而且这样如果访问的人稍微多一些磁盘IO可能会扛不住,因为IO资源是非常有限的,所以还是拆文件才是上策;而当我们写CSV,也就是文本类型的文件,我们很多时候是可以自己控制的,不过你不要用CSV自己提供的API,也是不太可控的,CSV本身就是文本文件,你按照文本格式写入即可被CSV识别出来;如何写入呢?下面来说说x~b~a~i~x~i~n~g~c~o~m小_百_姓_网x~b~a~i~x~i~n~g~c~o~m
在处理数据层面,如从数据库中读取数据,生成本地文件,写代码为了方便,我们未必要1M怎么来处理,这个交给底层的驱动程序去拆分,对于我们的程序来讲我们认为它是连续写即可;我们比如想将一个1000W数据的数据库表,导出到文件;此时,你要么进行分页,Oracle当然用三层包装即可,MySQL用limit,不过分页每次都会新的查询,而且随着翻页,会越来越慢,其实我们想拿到一个句柄,然后向下游动,编译一部分数据(如10000行)将写文件一次(写文件细节不多说了,这个是较基本的),需要注意的时候每次buffer的数据,在用outputstream写入的时候,较好flush一下,将缓冲区清空下小百姓网www.xbaixing.com
来设置游标的方式,以至于游标不是将数据直接cache到本地内存,然后通过设置statement.setFetchSize(200);设置游标每次遍历的大小;OK,这个其实我用过,oracle用了和没用没区别,因为oracle的jdbc API默认就是不会将数据cache到java的内存中的,而mysql里头设置根本无效,我上面说了一堆废话,呵呵,我只是想说,java提供的标准API也未必有效,很多时候要看厂商的实现机制,还有这个设置是很多网上说有效的,但是这纯属抄袭;对于oracle上面说了不用关心,他本身就不是cache到内存,所以java内存不会导致什么问题,如果是mysql,首先必须使用5以上的版本,然后在连接参数上加上useCursorFetch=true这个参数,至于游标大小可以通过连接参数上加上:defaultFetchSize=1000来设置,
上次被这个问题纠结了很久(mysql的数据老导致程序内存膨胀,并行2个直接系统就宕了),还去看了很多源码才发现奇迹竟然在这里,较后经过mysql文档的确认,然后进行测试,并行多个,而且数据量都是500W以上的,都不会导致内存膨胀,GC一切正常,这个问题终于完结了小百姓网www.xbaixing.com
Java在处理大数据的时候还是有一些小技巧的,正确运用这些小技巧,有时候在处理问题时往往会事半功倍x.b.a.i.x.i.n.g.c.o.m。更多Java的学习尽在捷梯教育,捷梯教育的Java课程有四个阶段的学习,四个阶段让大牛讲师带你精通掌握Java技术xbaixing.com


上海松江Java学习机构-Java如何处理大数据

温馨提示:上海松江Java学习机构-Java如何处理大数据”由用户自行发布,信息内容的真实性、准确性和合法性由发布人负责。虽然部分网友认证了账号,但是并不代表没有风险。小生活网不提供任何保证不参与交易,亦不承担任何法律责任。
上海职业培训全部地区
浦东职业培训闵行职业培训徐汇职业培训长宁职业培训普陀职业培训静安职业培训卢湾职业培训黄浦职业培训闸北职业培训虹口职业培训杨浦职业培训宝山职业培训嘉定职业培训青浦职业培训松江职业培训金山职业培训奉贤职业培训南汇职业培训崇明职业培训上海周边职业培训
上海职业培训热门城市
北京职业培训上海职业培训深圳职业培训广州职业培训成都职业培训天津职业培训苏州职业培训杭州职业培训武汉职业培训郑州职业培训南京职业培训济南职业培训青岛职业培训重庆职业培训西安职业培训宁波职业培训石家庄职业培训沈阳职业培训厦门职业培训长沙职业培训
上海职业培训周边服务
上海职业培训上海婴幼儿教育上海企业管理/MBA上海其他培训上海中小学教育上海移民上海电脑培训上海设计培训上海家教上海留学上海学历教育上海外语培训上海文体培训
全国职业培训最新信息
通州牛堡屯张家湾土桥电工培训 焊工培训 叉车培训学校北京朝阳管庄双桥电工培训焊工培训学校十堰室内设计,平面设计,电脑办公培训找智恒廊坊香河大厂焊工培训电工培训焊工取证电工取证学校北京特种作业电工焊工叉车制冷空调锅炉电梯取证培训学校北京考司炉工证怎么考哪里报名哪里考试北京大兴北臧村保育员培训班上课时间内容哪里报名咸阳高压低压电工证培训学习在哪里报名多钱费用咸阳申报建筑专职安全员ABC岗位证书考试每月一次专业高效 陕西省中高级工程师职称评审有哪些问题