请大家帮帮忙,帮我解决这个问题:现在有 两个 大文本文件(大概100M) 里面是分行 一条条记录都是字符串,两个文件现在要作对比,文件中每一行 都会有一段字符串作为一个id, 有两个文件相应的id映射文件
有字段映射文件(字段大概160多个) 也就是文件中每一行 其实也就是相当于数据库中的一条记录在要比较 这两个文件的差异 也就是比较每一条记录的各字段值的差异
最后输出到一个新的文本文件 并统计结果这个东西看起来很简单 如果数据量小 实现起来并不难 但是现在频繁io和一些大数据量加载 经常出现 内存溢出希望大家帮我想想办法 设计个性能好点的方案 先在这里谢谢大家了数据比较 大文本 IO
有字段映射文件(字段大概160多个) 也就是文件中每一行 其实也就是相当于数据库中的一条记录在要比较 这两个文件的差异 也就是比较每一条记录的各字段值的差异
最后输出到一个新的文本文件 并统计结果这个东西看起来很简单 如果数据量小 实现起来并不难 但是现在频繁io和一些大数据量加载 经常出现 内存溢出希望大家帮我想想办法 设计个性能好点的方案 先在这里谢谢大家了数据比较 大文本 IO
根据"id映射文件"对其中一个文件A的记录按照另一个文件B的记录顺序重新排序得到文件C(大文件排序可使用外排序),然后对文件B和C逐行比较。
你的需求真不如把两文件数据塞到数据库的两个表里,然后用insert select把结果保存到别一个表里就搞定了。
否则的话可以分段读取对比。
这个问题可以采集,分布比较。
先对每个文件进行排序,排序的过程,根据ID的特性,分成不同的几个文件。
比如A文件的ID分为1~5,5~10等文件。B文件也同样分为几个文件。
再利用多线程分别比较相对于的小文件(充分利用多线程的优势)。
文件的划分排序网上有很多!