用Java

时间:2018-02-14 17:06:43

标签: java algorithm file optimization generic-programming

如何根据键对包含大约6 GB大小的1000万条记录(JSON记录)的非常大的文件进行排序。

解决方案应该是内存优化的。我的意思是,有很多方法可以将数据放入Collection和sort中,但这会占用大量的堆大小,从而导致时间障碍。

请建议一些通用内存优化排序技术,其中我们可以传递JSON文件和一些键值以及排序类型,并返回一个排序文件。

例如

文件input.json

{
    "name":"rohit", "age":20, ....
}
{
    "name":"sourav", age":32, ....
}
.
.
.
//some 10 million records

因此,假设密钥是age,它和type是desc,它应该按照年龄排序的desc顺序返回一个文件。

2 个答案:

答案 0 :(得分:1)

您可以尝试合并排序,即存储较小的文件块

答案 1 :(得分:1)

您的要求并非如此简单。首先它是6GB文件,第二个挑战是对它进行排序。您需要先将文件拆分为小文件。现在需要编写适当的算法或程序要求。读取每个文件并根据算法进行排序并写入文件。每个新创建的文件应该只有一个特定的排序信息。例如,如果键类型green在green.sort文件中写入该排序信息,并最终合并所有文件并使其成为一个文件。