如何根据键对包含大约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顺序返回一个文件。
答案 0 :(得分:1)
您可以尝试合并排序,即存储较小的文件块
答案 1 :(得分:1)
您的要求并非如此简单。首先它是6GB文件,第二个挑战是对它进行排序。您需要先将文件拆分为小文件。现在需要编写适当的算法或程序要求。读取每个文件并根据算法进行排序并写入文件。每个新创建的文件应该只有一个特定的排序信息。例如,如果键类型green
在green.sort文件中写入该排序信息,并最终合并所有文件并使其成为一个文件。