Chciałem wiedzieć, czy istnieje ograniczenie liczby wierszy, które można odczytać za pomocą funkcji data.table fread. Pracuję z tabelą z 4 miliardami wierszy, 4 kolumnami, około 40 GB. Wygląda na to, że fread odczyta tylko pierwsze ~ 840 milionów wierszy. Nie daje żadnych błędów, ale wraca do znaku zachęty R, tak jakby odczytał wszystkie dane!Limit wierszy dla tabeli danych w R przy użyciu fidry
Rozumiem, że fidera nie używa się obecnie w "prod use" i chciałem się dowiedzieć, czy był jakiś czas na wdrożenie wersji prod-release.
Powodem Używam data.table jest to, że dla plików takich rozmiarów, jest niezwykle skuteczny przy przetwarzaniu danych w porównaniu do ładowania pliku w data.frame itp
W tej chwili staram 2 inne alternatywy -
1) Za pomocą skanowania i przekazywania do data.table
data.table(matrix(scan("file.csv",what="integer",sep=","),ncol=4))
Resulted in --
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
too many items
2) Przełamując plik na wiele pojedynczych segmentów z limitem ok. 500 milionów wierszy przy użyciu Uniksa dzieli i czyta je sekwencyjnie ... a następnie przechwytuje pliki sekwencyjnie w plik fread - nieco uciążliwy, ale wydaje się być jedynym praktycznym rozwiązaniem.
Myślę, że może istnieć sposób Rcpp to zrobić jeszcze szybciej, ale nie jestem pewien, jak to jest ogólnie realizowane.
Z góry dziękuję.
Upewnij się, że nie jest niczym niezwykłym w pliku w ostatnim wierszu, który został odczytany lub linii po tym, a następnie [Akceptuj] (https: // r-Forge. r-project.org/tracker/?group_id=240) raport o błędzie lub skontaktuj się z pakietem mantainer. – Roland
Czy na pewno masz wystarczającą ilość pamięci RAM? Czy pracujesz z 64-bitowym R? – eddi
Nie, niekoniecznie jest szybszy sposób z Rcpp, ponieważ Matt już używa mmap. Sprawdź dokumentację systemu operacyjnego pod kątem limitów wywołania mmap. Miliardy mogą naciskać to ... –