radzenie sobie z dużymi plikami CSV (20G) w rubinie

Pracuję nad małym problemem i mam kilka porad, jak go rozwiązać: Biorąc pod uwagę plik csv z nieznaną liczbą kolumn i wierszy, wypisz listę kolumn z wartościami i liczbę powtórzeń każdej wartości. bez korzystania z żadnej biblioteki.

jeśli plik jest mały, nie powinno to stanowić problemu, ale gdy jest kilka Gigs, otrzymuję NoMemoryError: nie można przydzielić pamięci. czy istnieje sposób na utworzenie skrótu i ​​odczyt z dysku zamiast ładowania pliku do pamięci? możesz to zrobić w perlu z związanymi Hashes

EDIT: czy IO # foreach załaduje plik do pamięci? jak o File.open (nazwa pliku) .each?

questionAnswers(2)

yourAnswerToTheQuestion