如果一个xml文件原来有5g,但是通过程序读取以后分割以后只有1g了

蛇叔 发布于 2014/06/03 11:10
阅读 591
收藏 0

因为做一个5g数据的xml解析,5g太大了,不能解析,最后的方案是分割+线程来控制,因为在分割的时候,我是按照节点分割的,所有原来有5g的xml,最后通过自定义的程序分割后,只有1g了。

希望大神帮助下,,

如果可以也可以提供分割工具一下,,网上的找的都没成功过。0,0

加载中
0
明月惊鹊
明月惊鹊
很好奇是什么数据啊,5G大啊,,,这么大的数据不适合做文本分析了吧,,,,,
0
蛇叔
蛇叔

引用来自“明月惊鹊”的评论

很好奇是什么数据啊,5G大啊,,,这么大的数据不适合做文本分析了吧,,,,,
那要怎么做呢?
0
CloudArchitect
CloudArchitect
1g的文件也太大了吧,没有服务器的话也跑不动啊
0
huan
huan
大文档使用sax等基于事件的流分析器
0
wharf_zhang
wharf_zhang
什么意思呢?是想化整为零地分割成五个1G的文件分别处理后再合并结果,还是在说别的什么。难道不能借助数据库来做么,而且,只需做过一次这样的处理工作,以后你再处理100GB的XML也不是问题嘛。
0
蛇叔
蛇叔

引用来自“程序猿可爱多”的评论

1g的文件也太大了吧,没有服务器的话也跑不动啊
用服务器跑的。。现在是需要把一个5g的分成100份用多线程跑数据到数据库中。但是,只是拆分的时候,解析完,表示读取到了1/5的数据。。
CloudArchitect
CloudArchitect
拆分的话得看具体的格式了,要是一条记录拆到两个文件就尴尬了
0
蛇叔
蛇叔

引用来自“wharf_zhang”的评论

什么意思呢?是想化整为零地分割成五个1G的文件分别处理后再合并结果,还是在说别的什么。难道不能借助数据库来做么,而且,只需做过一次这样的处理工作,以后你再处理100GB的XML也不是问题嘛。
拆分,,把5个的拆分,因为源数据都是放在xml中,所以要读数据到数据库中。
wharf_zhang
wharf_zhang
当然是一边读一边写数据库,不会一次读入到内存。
蛇叔
蛇叔
回复 @wharf_zhang : 不会有那么大的内存支持啊
wharf_zhang
wharf_zhang
不拆分,一次读入数据库不行么
0
蛇叔
蛇叔

引用来自“huan”的评论

大文档使用sax等基于事件的流分析器
解析我做了,现在我需要做的就是拆分xml的问题
0
无名飞非
能解析的话就简单了,记下几个内部节点的开始和结束行号,写个脚本直接复制那几行到新文件里去
0
蛇叔
蛇叔

我还是自己用流读取的方式,分割了文件。。。分成了50M一个的大小的xml...然后用了gc,对于程序工作到一定时候,进行了回收处理。外层则用线程控制。

有一点补充,前面那个解压的问题,是内存占用的问题。内存不够,就可能产生这种现象。

现已经解决。谢谢各位

返回顶部
顶部