我有两个大约150 MB的大txt文件。我想从file1的每一行读取一些数据,并扫描file2的所有行,直到找到匹配的数据。如果没有找到匹配的数据,我希望将该行输出到另一个文件中。
选项2:使用上面提到的三个读取器对文件1中的每个记录读取文件2 n次。每次读取后,我必须关闭文件并再次读取。我在想最好的办法是什么。我还有别的选择吗
我得对文件做些假设。我将假设行是长的,并且你希望在2个文件中的行是不一样的。
我会读4次文件(每个文件2次)。当然,它没有读取2次(每个文件1次)那么高效,但读取2次意味着使用了大量内存。
每个文件第一次读取的伪代码:
Map<MyComparableByteArray, Long> digestMap = new HashMap<>();
try (BufferedReader br = ...)
{
long lineNr = 0;
String line;
while ((line = br.readLine()) != null)
{
digestMap.put(CreateDigest(line), lineNr);
}
}
顺便说一句,MyComparableByteArray是一个byte[]的自定义包装器,以使它成为一个HashMap键(即通过实现equals()和hashCode()方法)。字节[]不能用作键,因为它不能与equals()和hashCode()一起使用。有两种处理方法:
问题内容: 我正在尝试使用多重处理来并行化应用程序,该处理程序会处理一个非常大的csv文件(64MB至500MB),逐行执行一些工作,然后输出一个固定大小的小文件。 目前,我正在执行,不幸的是,它已完全加载到内存中(我认为),然后我将该列表分成了n个部分,n是我要运行的进程数。然后,我在分类列表上执行。 与单线程,仅打开文件并迭代的方法相比,这似乎具有非常非常糟糕的运行时。有人可以提出更好的解决方
我在一个目录中有许多文件,每个文件包含跨多行的文本。目前,我使用以下代码将所有这些文件读取到spark数据集( 但是,这会创建一个数据集,其中每一行都是一行,而不是一个文件。我希望数据集中每行都有一个文件(作为字符串)。 如何在不迭代每个文件并将其作为RDD单独读取的情况下实现这一点?
问题内容: 我编写了一个PHP脚本,该脚本贯穿文本文件(实际上是imdb的“列表”文件)并将其存储在本地MySQL数据库中。 由于这些列表文件最大为200MB,因此需要花费大量时间。默认情况下,PHP 设置为30秒。 我将此值设置为300只是为了尝试是否可行。例如,我的“ movies.list”文件约为80MB,并使用此脚本运行了300秒,在数据库中创建了约25000行。这行不通,因为我什至没有
问题内容: 如何检查数据库中是否存在Blob的重复项。我的数据库中有文档表,但是我不确定如何检查其中一个是否重复。我知道您应该使用dbms_lob.compare函数,但是在阅读了有关该主题的一些线程和文章之后,我仍然不明白这一点。 Documents表具有document_id列和data(blob)列。如何检查document_id = 1是否重复? 问题答案: “如果dbms_lob.com
我正在使用Excel2007。当某些列数据从文件-1与文件-2匹配时,我试图将单价从Excel文件-2数据复制到Excel文件-1。 我的VBA代码:
问题内容: 我使用巨大的数据文件,有时我只需要知道这些文件中的行数,通常我会打开它们并逐行读取它们,直到到达文件末尾 我想知道是否有更聪明的方法可以做到这一点 问题答案: 这是我到目前为止找到的最快的版本,比readLines快6倍。在150MB的日志文件上,这需要0.35秒,而使用readLines()则需要2.40秒。只是为了好玩,Linux的wc -l命令需要0.15秒。 编辑,在9 1/2