Devo leggere un grande file di testo, diciamo, di 25 GB e devo elaborare questo file entro 15-20 minuti. Questo file avrà più sezioni di intestazione e piè di pagina.Lettura ed elaborazione di file di testo di 25 GB
Ho provato CSplit a dividere questo file in base all'intestazione, ma ci vogliono circa 24-25 minuti per dividerlo in un numero di file basato sull'intestazione, che non è affatto accettabile.
Ho provato lettura e scrittura sequenziale utilizzando BufferReader
e BufferWiter
insieme FileReader
e FileWriter
. Ci vogliono più di 27 minuti. Di nuovo, non è accettabile.
Ho provato un altro approccio come ottenere l'indice di inizio di ogni intestazione e quindi eseguire più thread per leggere il file da una posizione specifica utilizzando RandomAccessFile
. Ma senza fortuna su questo.
Come posso raggiungere il mio requisito?
Possibile duplicato di:
NIO ha i suoi brutti limiti progettati direttamente in esso: è possibile mappare 2 GB al massimo come buffer poiché l'API Buffer utilizza un int per tutti gli offset. Ciò rende Nio ingombrante nella migliore delle ipotesi per file di grandi dimensioni. – Durandal