开发者社区> 问答> 正文

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

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

希望大神帮助下,,

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

展开
收起
kun坤 2020-06-06 16:10:23 682 0
1 条回答
写回答
取消 提交回答
  • 很好奇是什么数据啊,5G大啊,,,这么大的数据不适合做文本分析了吧,,,,,######

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

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

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

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

    引用来自“wharf_zhang”的评论

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

    引用来自“huan”的评论

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

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

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

    现已经解决。谢谢各位

    2020-06-06 16:10:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
阿里巴巴新基建洞察---5G智能经济应用场景报告 立即下载
文娱5G+AI 立即下载
《阿里巴巴新基建洞察之5G智能经济应用场景》 立即下载