Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要Java建议来处理未索引文件中存在的数十亿条记录吗_Java_Bufferedreader_Large Files_Data Extraction - Fatal编程技术网

需要Java建议来处理未索引文件中存在的数十亿条记录吗

需要Java建议来处理未索引文件中存在的数十亿条记录吗,java,bufferedreader,large-files,data-extraction,Java,Bufferedreader,Large Files,Data Extraction,我有4个大的.tab文件,其中一个是6GB,其他每个是10GB。6GB文件包含特定区域的动物信息,其他3个文件包含与6GB文件中存在的每种动物相关的其他重要信息 我需要编写一个程序,根据一些用户输入从这些大文件生成小数据集 我逐行从6GB的文件中读取动物的数据,如果它们通过了某些条件,它们将存储在ArrayList中,否则将被忽略 现在,对于ArrayList中的每一个动物,我需要一遍又一遍地检查其他3个文件,以便进一步过滤它们,最终生成所使用的小数据集。但到目前为止,获取一个包含1500条动物

我有4个大的.tab文件,其中一个是6GB,其他每个是10GB。6GB文件包含特定区域的动物信息,其他3个文件包含与6GB文件中存在的每种动物相关的其他重要信息

我需要编写一个程序,根据一些用户输入从这些大文件生成小数据集

我逐行从6GB的文件中读取动物的数据,如果它们通过了某些条件,它们将存储在ArrayList中,否则将被忽略

现在,对于ArrayList中的每一个动物,我需要一遍又一遍地检查其他3个文件,以便进一步过滤它们,最终生成所使用的小数据集。但到目前为止,获取一个包含1500条动物记录的小数据集大约需要7个小时的运行时间。罪魁祸首是,对于我选择进入ArrayList的每只动物,我需要在数据提取过程的不同步骤多次查找其他3个文件

我已经用Java编写了这方面的代码。但是这个程序非常慢。我使用缓冲读取器访问这些文件。但我正在寻找其他可以在Java中使用的工具和技术,使这个系统高效、可用

我曾考虑过在SQL或NoSQL数据库中推送数据,但在我采取措施改进性能之前,我需要专家的建议来指导我朝着正确的方向前进


提前感谢

如果您需要可移植性或其他数据库引擎,我会选择SQLite。这样,您就可以将数据分割成与位大小相关的部分

您需要先“消化”数据,使其可搜索并正确链接。因此,您可以使用带有id的动物名称创建一个表,因此如果用户搜索“cheetah”,您可以使用cheetah的id链接到其他信息表

而猎豹属于非洲大陆,x、y、z国家,是猫的一种,是捕食者的一种,是食肉动物的一种,等等。。。所有这些东西都应该联系在一起,等等。。 我相信,只要对大量重复数据进行分组和分类,并将其链接起来,就可以显著减少数据库的大小

困难的工作是识别6gb数据中的重复数据并对其进行分组和分类。
但当你完成后,你会有闪电般的速度比你现在的搜索。但一定要向那些设计了他们的数据库份额的人寻求帮助。您可以尝试询问有关选择哪种数据库类型以及如何设置数据库的有用提示。

您确实应该选择一个数据库。@Micheal,数据不包含任何重复项,所有4个文件都是相关的,每个记录都包含唯一的ID。但到目前为止,获取一个包含1500条动物记录的小数据集大约需要7个小时的运行时间。罪魁祸首是,对于我首先选择的每只动物,我需要在数据提取过程的不同步骤中多次查找其他3个文件。尽管如此,这仍然适用于。。。但是,即使是很简单,您也应该在sql数据库中建立您现在拥有的链接方法。它会比你现在拥有的快得多。