Пересечь большой файл: проблема с памятью в кластере - PullRequest
0 голосов
/ 25 сентября 2018

Я хотел бы пересечь серию маленьких файлов с относительно большим файлом.Следуя многим темам, связанным со стековым потоком, и после некоторых тестов я решил использовать эту функцию, которая была самой быстрой из моих данных:

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 - два-columns табуляции с разделителями ~ 1 миллион строк файла.

Пример :

file1

A
B
C

file2

A 1
B 2
C 3

Я запускаю команду в кластере с 1 потокоми 48 Гб оперативной памяти.Однако, как только я достигаю файла1 больше 10000 строк, он вылетает со следующей ошибкой:

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

Может кто-нибудь объяснить мне, почему эта команда хранит так много в памяти и как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...