相交大文件:群集上的内存需求问题

时间:2018-09-25 06:42:12

标签: grep out-of-memory cluster-computing slurm

我想将一系列小文件与一个相对大的文件相交。遵循关于堆栈溢出的许多主题并经过一些测试之后,我选择使用此函数,该函数是我数据中最快的:

for file1 in ./myfiles*
do 
    # Do other things to create file1 and file2
    # Then
    grep -f $file1 file2.txt | awk -F '\t' '{print $1}' > myResults_$file1.txt
done

其中,file1是一个50到100000行的单列文件,而file2是两个由制表符分隔的〜1百万行的文件。

Ex

file1

A
B
C

file2

A 1
B 2
C 3

我在具有1个线程和48Gb RAM的群集上运行命令。但是我一到达文件1大于10000行,它就会崩溃,并显示以下错误:

slurmstepd: Job 3312063 exceeded memory limit (50359784 > 50331648), being killed

有人可以向我解释为什么此命令在内存中存储的空间如此大,如何解决此问题?

0 个答案:

没有答案