Używam fread w data.table (1.8.8, R 3.0.1) w celu odczytu bardzo dużych plików.Błąd przepełnienia stosu ochrony przed przepełnieniem
Plik, którego dotyczy pytanie, ma 313 wiersze i ~ 6,6 milionów kolsjek wierszy danych liczbowych, a plik ma około 12 GB. To jest Centos 6.4 z 512 GB pamięci RAM.
Gdy próbuję odczytać w pliku:
g=fread('final.results',header=T,sep=' ')
'header' changed by user from 'auto' to TRUE
Error: protect(): protection stack overflow
starałem począwszy R z --max-ppsize 500000, który jest max, ale z tego samego błędu.
Próbowałem również ustawienie rozmiaru stosu nieograniczony poprzez
ulimit -s unlimited
Wirtualnej pamięci został już ustawiony na nieograniczony.
Czy jestem nierealny z plikiem tej wielkości? Czy tęskniłem za czymś dość oczywistym?
Proszę wypróbować v1.8.9 na R-Forge (link na stronie domowej data.table). Istnieje 10 poprawek do 'fread', patrz NEWS. Obsługa dużych plików jest jednym z nich, ale na Windowsie, tak jak powinno być dobrze na Linuksie. 6,6 milionów kolumn (!) Jest nowością i może być nowym błędem. Potwierdź w wersji 1.8.9, a my przejdziemy dalej ... –
@MatthewDowle Tak, nie jestem zadowolony z 6 milionów wierszy. Zainstaluj 1.8.9, ten sam błąd. Zrobiłem znacznie mniejszy plik, 10 wierszy x 50 KB, ten sam błąd. 10 wierszy x 49,999 kol. Działa. – mpmorley
Czy chodziło Ci o kolumny w tym komentarzu (napisałeś 6 milionów wierszy)? Bardzo interesujące i dziwne jest to, że zawodzi dokładnie 50 000 kolumn. Dobra robota, żeby tak szybko to poprawić. Nie przypominam sobie żadnego takiego limitu kolumn. Przyjrzy się. –