Запрашивает 60 ГБ памяти ЦВ в R на первом столбце, какая база данных / метод? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть 6 больших tsv-матриц по 60 ГБ (несжатых), содержащих 20 миллионов строк x 501 столбцов: первый столбец индекса / целого числа, который в основном является номером строки (поэтому даже не обязательно), 500 столбцов являются числовыми (с плавающей запятой, 4 десятичных знака, например1,0301).Все TSV имеют одинаковое количество строк, которые соответствуют друг другу.

Мне нужно извлечь строки по ряду.

Мне нужно извлечь до 5000 смежных строк или до 500 несмежных строк, а не миллионы.Надеюсь, также есть какое-то сжатие, чтобы уменьшить размер 60 ГБ, так что, может быть, нет SQL?Каков был бы лучший способ сделать это?

  • Один из методов, которые я попробовал, состоит в том, чтобы разделить их на 100-сжатые файлы, проиндексировать их, используя tabix, и затем запросить их, но это слишком медленно для моей потребности (500 случайных строк заняли 90 секунд).

  • Я читал о пакете ff, но не нашел, как индексировать по первому столбцу?

  • Есть ли другие способы?

Большое спасибо.

1 Ответ

0 голосов
/ 16 февраля 2019

Я буду использовать fread() из data.table пакета

Используя параметры skip и nrows, вы можете поиграть с начальной строкой для чтения (skip) или количеством строк длячитать (nrows)

Если вы хотите исследовать подход tidyverse, я рекомендую вам это решение R: Чтение в случайных строках из файла с использованием fread или эквивалентного?

...