Как я могу определить, когда мой набор данных в R будет слишком большим?
Я собираюсь провести некоторый анализ файла журнала в R (если я не могу сделать это в R), и я понимаю, что мои данные должны помещаться в ОЗУ (если я не использую какое-то исправление, такое как интерфейс для хранилища ключей, может быть?). Поэтому мне интересно, как заранее определить, сколько места мои данные будут занимать в оперативной памяти, и хватит ли мне этого. Я знаю, сколько у меня оперативной памяти (не очень много - 3 ГБ под XP), и я знаю, сколько строк и столбцов будет в моем лог-файле и какие типы данных должны быть в столбцах (которые, вероятно, мне нужно проверить как это читает).
Как мне соединить это в однозначное решение для проведения анализа в R? (Предположительно, R должен обладать некоторой оперативной памятью для выполнения операций, а также для хранения данных!) Мой немедленный необходимый вывод - это набор простых сводных статистических данных, частот, непредвиденных обстоятельств и т. Д., И поэтому я, вероятно, мог бы написать какой-то парсер / табулятор, который даст мне вывод, который мне нужен в краткосрочной перспективе, но я также хочу поэкспериментировать с множеством различных подходов к этим данным в качестве следующего шага, поэтому я смотрю на возможность использования R.
Я видел много полезных советов о больших наборах данных в R, которые я прочитал и перечитал, но сейчас я хотел бы лучше понять, как выяснить, должен ли я (а) идти туда вообще, (б) идти есть, но ожидайте, что придется сделать некоторые дополнительные вещи, чтобы сделать его управляемым, или (c) убежать, пока не стало слишком поздно, и сделать что-то на другом языке / среде (предложения приветствуются...!). Спасибо!
1 ответ
R хорошо подходит для больших наборов данных, либо с использованием готовых решений, таких как bigmemory
или пакет ff (особенно read.csv.ffdf
) или обрабатывать ваши вещи кусками, используя ваши собственные сценарии. Почти во всех случаях небольшое программирование делает возможной обработку больших наборов данных (>> памяти, скажем, 100 Гб). Самостоятельное программирование занимает определенное время (я не знаю вашего уровня), но делает вас по-настоящему гибким. Если это ваша чашка чая или вам нужно бежать, зависит от того, сколько времени вы хотите потратить на изучение этих навыков. Но как только они у вас появятся, они значительно облегчат вам жизнь как аналитика данных.
Что касается анализа лог-файлов, я знаю, что страницы статистики, генерируемые из Call of Duty 4 (компьютерная многопользовательская игра), работают путем многократного синтаксического анализа файла журнала в базе данных, а затем извлекают статистику для каждого пользователя из базы данных. Смотрите здесь для примера интерфейса. Итеративный (в блоках) подход означает, что размер файла журнала (почти) неограничен. Однако получить хорошую производительность не тривиально.
Многое, что вы можете сделать в R, вы можете сделать в Python или Matlab, даже в C++ или Fortran. Но только если этот инструмент имеет встроенную поддержку того, что вам нужно, я мог бы увидеть явное преимущество этого инструмента перед R. Для обработки больших данных см. Представление HPC Task. Смотрите также более ранний ответ min для чтения очень большого текстового файла кусками. Другие ссылки, которые могут быть вам интересны:
- Быстрое чтение очень больших таблиц как данных в R
- https://stackru.com/questions/1257021/suitable-functional-language-for-scientific-statistical-computing (обсуждение включает в себя, что использовать для обработки больших данных).
- Обрезка огромного (3,5 ГБ) CSV-файла для чтения в R
- Мой пост в блоге, показывающий, как оценить использование ОЗУ в наборе данных. Обратите внимание, что это предполагает, что данные будут храниться в матрице или массиве, и это только один тип данных.
- Обработка файла журнала с помощью R
Что касается выбора R или какого-либо другого инструмента, я бы сказал, что если он достаточно хорош для Google, то он достаточно хорош для меня;).