Что я хотел бы сделать, так это перетасовать строки (считывание из CSV), затем распечатать первые рандомизированные 10 000 строк в один csv, а остальные - в отдельный csv. С небольшим файлом я могу сделать что-то вроде
java.util.Collections.shuffle(...)
for (int i=0; i < 10000; i++) printcsv(...)
for (int i=10000; i < data.length; i++) printcsv(...)
Однако с очень большими файлами я получаю OutOfMemoryError